Skip to main content

Driver Standings

Collection and sensor choices

Keep every entity used by templates, older cards and automations selected. Automatic card data does not recreate a removed automation entity. Existing installations keep their sensor choices and continue entity updates and F1 event delivery after upgrading. See Automatic card data and optional sensors.

Current driver championship standings. Use sensor.f1_driver_standings in dashboards, templates, and automations.

This reference covers the state and attributes. For setup, see Configuration.

Find your entity

These are standard entity IDs. If Home Assistant assigned a different ID, or you renamed an entity, use your existing ID in the examples.

State and attributes​

sensor.f1_driver_standings - Driver standings snapshot from Ergast.

State

  • Integer: number of drivers in the standings list.

Example

20

Attributes

AttributeTypeDescription
seasonstringSeason year
roundstringRound of the standings snapshot
driver_standingslistErgast "DriverStandings" array

Each entry in driver_standings contains:

FieldTypeDescription
positionstringChampionship position
positionTextstringPosition as display text
pointsstringTotal points
winsstringNumber of wins
DriverobjectDriver information
ConstructorslistList of constructor(s) the driver has raced for

The Driver object contains:

FieldTypeDescription
driverIdstringDriver identifier (e.g., "max_verstappen")
permanentNumberstringPermanent car number
codestringThree-letter driver code (TLA)
urlstringWikipedia URL
givenNamestringFirst name
familyNamestringLast name
dateOfBirthstringDate of birth (YYYY-MM-DD)
nationalitystringNationality

Each entry in Constructors contains:

FieldTypeDescription
constructorIdstringConstructor identifier
urlstringWikipedia URL
namestringTeam name
nationalitystringTeam nationality
JSON Structure Example
{
"season": "2025",
"round": "12",
"driver_standings": [
{
"position": "1",
"positionText": "1",
"points": "255",
"wins": "7",
"Driver": {
"driverId": "max_verstappen",
"permanentNumber": "1",
"code": "VER",
"url": "http://en.wikipedia.org/wiki/Max_Verstappen",
"givenName": "Max",
"familyName": "Verstappen",
"dateOfBirth": "1997-09-30",
"nationality": "Dutch"
},
"Constructors": [
{
"constructorId": "red_bull",
"url": "http://en.wikipedia.org/wiki/Red_Bull_Racing",
"name": "Red Bull",
"nationality": "Austrian"
}
]
},
{
"position": "2",
"positionText": "2",
"points": "180",
"wins": "2",
"Driver": {
"driverId": "lewis_hamilton",
"permanentNumber": "44",
"code": "HAM",
"url": "http://en.wikipedia.org/wiki/Lewis_Hamilton",
"givenName": "Lewis",
"familyName": "Hamilton",
"dateOfBirth": "1985-01-07",
"nationality": "British"
},
"Constructors": [
{
"constructorId": "ferrari",
"url": "http://en.wikipedia.org/wiki/Scuderia_Ferrari",
"name": "Ferrari",
"nationality": "Italian"
}
]
}
]
}
Jinja2 Template Examples

Get championship leader:

{% set standings = state_attr('sensor.f1_driver_standings', 'driver_standings') %}
{% if standings and standings | length > 0 %}
{% set leader = standings[0] %}
Leader: {{ leader.Driver.givenName }} {{ leader.Driver.familyName }} ({{ leader.points }} pts)
{% endif %}

Get a specific driver's position:

{% set standings = state_attr('sensor.f1_driver_standings', 'driver_standings') %}
{% set ver = standings | selectattr('Driver.code', 'eq', 'VER') | first %}
{% if ver %}
VER is P{{ ver.position }} with {{ ver.points }} points and {{ ver.wins }} wins
{% endif %}

Calculate points gap to leader:

{% set standings = state_attr('sensor.f1_driver_standings', 'driver_standings') %}
{% if standings and standings | length > 1 %}
{% set leader_pts = standings[0].points | int %}
{% set second_pts = standings[1].points | int %}
Gap: {{ leader_pts - second_pts }} points
{% endif %}

List top 5 drivers:

{% set standings = state_attr('sensor.f1_driver_standings', 'driver_standings') %}
{% for d in standings[:5] %}
P{{ d.position }}: {{ d.Driver.code }} - {{ d.points }} pts
{% endfor %}

Get driver by car number:

{% set standings = state_attr('sensor.f1_driver_standings', 'driver_standings') %}
{% set driver = standings | selectattr('Driver.permanentNumber', 'eq', '44') | first %}
{% if driver %}
#44 {{ driver.Driver.familyName }} is P{{ driver.position }}
{% endif %}

Next steps​