Bicycle Counts - Angers Loire MétropoleComptages vélo - Angers Loire Métropole
Comptages vélo - Angers Loire MétropoleBicycle Counts - Angers Loire Métropole
This API provides bicycle traffic counts collected by cameras across the Angers Loire Métropole area in western France, maintained by the local authority Angers Loire Métropole. Counts are recorded over 7-day periods on dedicated cycle paths, lanes, pavements, or roads, with results broken down at hourly intervals. Data fields include the counter number, the name of the road or path, and a description of the section being monitored. The dataset is useful for analysing cycling activity patterns and informing local cycling infrastructure planning.Trafic vélo par caméras, sur un axe réservé (coulée verte, piste ou bande cyclable), un trottoir ou une voirie, pendant 7 jours, avec résultats au pas horaire sur le territoire d'Angers Loire Métropole. NUM_CPTR : Numéro compteur VOIE : Nom de la voie TRONCON : description des tronçons sur lequel...
Trust score
How is this computed?Weighted across five axes. Tap a ring for what it measures.
Data schema (60 fields)
Click a field to see example values.
| Fill | Field | Type | Description |
|---|---|---|---|
| 100% | num_cptrNum cptr | int | Identifier number of the bicycle counter.Identifier number of the bicycle counter. |
| 100% | voie | text | Name of the road or path where the counter is located.Name of the road or path where the counter is located. |
| 100% | troncon | text | Description of the road section covered by the counter.Description of the road section covered by the counter. |
| 100% | communeCommune | text | Name of the municipality where the counter is located.Name of the municipality where the counter is located. |
| 100% | campagne | text | Measurement campaign period, e.g. year and month.Measurement campaign period, e.g. year and month. |
| 100% | sens1 | text | Description of the first direction of travel.Description of the first direction of travel. |
| 100% | sens2 | text | Description of the second direction of travel.Description of the second direction of travel. |
| 100% | date_debutDate debut | text | Start date of the measurement period.Start date of the measurement period. |
| 100% | date_finDate fin | text | End date of the measurement period.End date of the measurement period. |
| 100% | s1_7_8hS1 7 8h | int | Cyclist count in direction 1 between 7am and 8am.Cyclist count in direction 1 between 7am and 8am. |
| 100% | s1_s2_7_8hS1 s2 7 8h | int | Total cyclist count in both directions between 7am and 8am.Total cyclist count in both directions between 7am and 8am. |
| 100% | s2_7_8hS2 7 8h | int | Cyclist count in direction 2 between 7am and 8am.Cyclist count in direction 2 between 7am and 8am. |
| 100% | s1_s2_8_9hS1 s2 8 9h | int | Total cyclist count in both directions between 8am and 9am.Total cyclist count in both directions between 8am and 9am. |
| 100% | s1_8_9hS1 8 9h | int | Cyclist count in direction 1 between 8am and 9am.Cyclist count in direction 1 between 8am and 9am. |
| 100% | s2_8_9hS2 8 9h | int | Cyclist count in direction 2 between 8am and 9am.Cyclist count in direction 2 between 8am and 9am. |
| 100% | s1_s2_9_10hS1 s2 9 10h | int | Total cyclist count in both directions between 9am and 10am.Total cyclist count in both directions between 9am and 10am. |
| 100% | s1_9_10hS1 9 10h | int | Cyclist count in direction 1 between 9am and 10am.Cyclist count in direction 1 between 9am and 10am. |
| 100% | s2_9_10hS2 9 10h | int | Cyclist count in direction 2 between 9am and 10am.Cyclist count in direction 2 between 9am and 10am. |
| 100% | s1_s2_16_17hS1 s2 16 17h | int | Total cyclist count in both directions between 4pm and 5pm.Total cyclist count in both directions between 4pm and 5pm. |
| 100% | s1_16_17hS1 16 17h | int | Cyclist count in direction 1 between 4pm and 5pm.Cyclist count in direction 1 between 4pm and 5pm. |
| 100% | s2_16_17hS2 16 17h | int | Cyclist count in direction 2 between 4pm and 5pm.Cyclist count in direction 2 between 4pm and 5pm. |
| 100% | s1_s2_17_18hS1 s2 17 18h | int | Total cyclist count in both directions between 5pm and 6pm.Total cyclist count in both directions between 5pm and 6pm. |
| 100% | s1_17_18hS1 17 18h | int | Cyclist count in direction 1 between 5pm and 6pm.Cyclist count in direction 1 between 5pm and 6pm. |
| 100% | s2_17_18hS2 17 18h | int | Cyclist count in direction 2 between 5pm and 6pm.Cyclist count in direction 2 between 5pm and 6pm. |
| 100% | s1_s2_18_19hS1 s2 18 19h | int | Total cyclist count in both directions between 6pm and 7pm.Total cyclist count in both directions between 6pm and 7pm. |
| 100% | s1_18_19hS1 18 19h | int | Cyclist count in direction 1 between 6pm and 7pm.Cyclist count in direction 1 between 6pm and 7pm. |
| 100% | s2_18_19hS2 18 19h | int | Cyclist count in direction 2 between 6pm and 7pm.Cyclist count in direction 2 between 6pm and 7pm. |
| 100% | s1_s2_19_20hS1 s2 19 20h | int | Total cyclist count in both directions between 7pm and 8pm.Total cyclist count in both directions between 7pm and 8pm. |
| 100% | s1_19_20hS1 19 20h | int | Cyclist count in direction 1 between 7pm and 8pm.Cyclist count in direction 1 between 7pm and 8pm. |
| 100% | s2_19_20hS2 19 20h | int | Cyclist count in direction 2 between 7pm and 8pm.Cyclist count in direction 2 between 7pm and 8pm. |
| 100% | s1_s2_20_21hS1 s2 20 21h | int | Total cyclist count in both directions between 8pm and 9pm.Total cyclist count in both directions between 8pm and 9pm. |
| 100% | s1_20_21hS1 20 21h | int | Cyclist count in direction 1 between 8pm and 9pm.Cyclist count in direction 1 between 8pm and 9pm. |
| 100% | s2_20_21hS2 20 21h | int | Cyclist count in direction 2 between 8pm and 9pm.Cyclist count in direction 2 between 8pm and 9pm. |
| 100% | s1_s2_21_22hS1 s2 21 22h | int | Total cyclist count in both directions between 9pm and 10pm.Total cyclist count in both directions between 9pm and 10pm. |
| 100% | s1_21_22hS1 21 22h | int | Cyclist count in direction 1 between 9pm and 10pm.Cyclist count in direction 1 between 9pm and 10pm. |
| 100% | s2_21_22hS2 21 22h | int | Cyclist count in direction 2 between 9pm and 10pm.Cyclist count in direction 2 between 9pm and 10pm. |
| 100% | hpmmax_nbrHpmmax nbr | text | Maximum cyclist count recorded during the morning peak hour.Maximum cyclist count recorded during the morning peak hour. |
| 100% | hpmmax_horHpmmax hor | text | Time slot of the morning peak hour maximum.Time slot of the morning peak hour maximum. |
| 100% | hpmmoy | text | Average cyclist count during the morning peak hour.Average cyclist count during the morning peak hour. |
| 100% | hpsmax_nbrHpsmax nbr | text | Maximum cyclist count recorded during the evening peak hour.Maximum cyclist count recorded during the evening peak hour. |
| 100% | hpsmax_horHpsmax hor | text | Time slot of the evening peak hour maximum.Time slot of the evening peak hour maximum. |
| 100% | hpsmoy | text | Average cyclist count during the evening peak hour.Average cyclist count during the evening peak hour. |
| 100% | hpjmax_nbrHpjmax nbr | text | Maximum cyclist count recorded during the busiest hour of the day.Maximum cyclist count recorded during the busiest hour of the day. |
| 100% | hpjmax_horHpjmax hor | text | Time slot of the busiest hour of the day.Time slot of the busiest hour of the day. |
| 100% | hpjmoy | text | Average cyclist count during the busiest hour of the day.Average cyclist count during the busiest hour of the day. |
| 100% | tmjo_s1Tmjo s1 | int | Average weekday daily traffic in direction 1.Average weekday daily traffic in direction 1. |
| 100% | tmjo_s2Tmjo s2 | int | Average weekday daily traffic in direction 2.Average weekday daily traffic in direction 2. |
| 100% | tmjo | int | Average weekday daily traffic in both directions.Average weekday daily traffic in both directions. |
| 93.8% | tmjw_s1Tmjw s1 | int | Average weekend daily traffic in direction 1.Average weekend daily traffic in direction 1. |
| 93.8% | tmjw_s2Tmjw s2 | int | Average weekend daily traffic in direction 2.Average weekend daily traffic in direction 2. |
| — | tmjw | int | Average weekend daily traffic in both directions.Average weekend daily traffic in both directions. |
| — | tmja_s1Tmja s1 | int | Average annual daily traffic in direction 1.Average annual daily traffic in direction 1. |
| — | tmja_s2Tmja s2 | int | Average annual daily traffic in direction 2.Average annual daily traffic in direction 2. |
| — | tmja | int | Average annual daily traffic in both directions.Average annual daily traffic in both directions. |
| — | obs | text | Observation or status note about the measurement.Observation or status note about the measurement. |
| — | annee | text | Year of the counting campaign.Year of the counting campaign. |
| — | id_voie_ignId voie ign | text | IGN reference identifier for the road.IGN reference identifier for the road. |
| — | source | text | Organization that produced the data.Organization that produced the data. |
| — | geo_point_2dGeo Point | geo_point_2d | Geographic coordinates of the counter location.Geographic coordinates of the counter location. |
| — | geo_shapeShape | geo_shape | Geographic line shape of the road section counted.Geographic line shape of the road section counted. |
Schema captured from opendatasoft 3 days ago.
Query the data
Pick columns and a sort, then fetch a live preview straight from the source. Choose an API-filterable column (marked ▾) under “Where” to pick from its list of values.
Sample data (5 records)
These rows are ODbL-1.0: share-alike. Reusing them obliges you to license any derived database on the same terms.
Record 1obs: ok · tmja: 90
{
"obs": "ok",
"tmja": 90,
"tmjo": 90,
"tmjw": 90,
"voie": "Route de Laval",
"annee": "2025",
"sens1": "Vers Route de La Chevallerie (Nord-Ouest)",
"sens2": "Vers D103 (Sud-Est)",
"hpjmoy": "6",
"hpmmoy": "6",
"hpsmoy": "6",
"source": "ANGERS LOIRE METROPOLE - DIRECTION TRANSPORTS DEPLACEMENTS",
"commune": "MONTREUIL-JUIGNÉ",
"s1_7_8h": 3,
"s1_8_9h": 4,
"s2_7_8h": 5,
"s2_8_9h": 5,
"tmja_s1": 52,
"tmja_s2": 38,
"tmjo_s1": 52,
"tmjo_s2": 38,
"tmjw_s1": 52,
"tmjw_s2": 38,
"troncon": "Entre la RD103 et la route de Marcille",
"campagne": "2025/09",
"date_fin": "20251015",
"num_cptr": 411,
"s1_9_10h": 1,
"s2_9_10h": 1,
"geo_shape": {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.6354520897,
47.5361104027,
0
],
[
-0.6349795428,
47.53651487,
0
]
]
},
"properties": {}
},
"s1_16_17h": 1,
"s1_17_18h": 4,
"s1_18_19h": 4,
"s1_19_20h": 7,
"s1_20_21h": 7,
"s1_21_22h": 4,
"s2_16_17h": 1,
"s2_17_18h": 2,
"s2_18_19h": 3,
"s2_19_20h": 1,
"s2_20_21h": 0,
"s2_21_22h": 0,
"date_debut": "20251009000001",
"hpjmax_hor": "S1S2_8_9H",
"hpjmax_nbr": "9",
"hpmmax_hor": "S1S2_8_9H",
"hpmmax_nbr": "9",
"hpsmax_hor": "S1S2_19_20H",
"hpsmax_nbr": "8",
"s1_s2_7_8h": 8,
"s1_s2_8_9h": 9,
"id_voie_ign": null,
"s1_s2_9_10h": 2,
"geo_point_2d": {
"lat": 47.53631263635,
"lon": -0.63521581625
},
"s1_s2_16_17h": 2,
"s1_s2_17_18h": 6,
"s1_s2_18_19h": 7,
"s1_s2_19_20h": 8,
"s1_s2_20_21h": 7,
"s1_s2_21_22h": 4
}Record 2obs: — · tmja: 82
{
"obs": null,
"tmja": 82,
"tmjo": 93,
"tmjw": 49,
"voie": "Route d' Angers",
"annee": "2023",
"sens1": "Vers Chemin de la Chatte (Sud-Ouest",
"sens2": "Vers La Machefèriere (Nord)",
"hpjmoy": "7",
"hpmmoy": "10",
"hpsmoy": "6",
"source": "ANGERS LOIRE METROPOLE - DIRECTION TRANSPORTS DEPLACEMENTS",
"commune": "ÉCOUFLANT",
"s1_7_8h": 4,
"s1_8_9h": 7,
"s2_7_8h": 6,
"s2_8_9h": 5,
"tmja_s1": 39,
"tmja_s2": 43,
"tmjo_s1": 44,
"tmjo_s2": 49,
"tmjw_s1": 25,
"tmjw_s2": 24,
"troncon": "Entre Chemin de la Chatte et La Machefèriere",
"campagne": "2023/10",
"date_fin": "20231013",
"num_cptr": 312,
"s1_9_10h": 4,
"s2_9_10h": 3,
"geo_shape": {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.5237313383,
47.4994926368,
0
],
[
-0.523134503,
47.4992591476,
0
]
]
},
"properties": {}
},
"s1_16_17h": 3,
"s1_17_18h": 5,
"s1_18_19h": 2,
"s1_19_20h": 3,
"s1_20_21h": 2,
"s1_21_22h": 0,
"s2_16_17h": 4,
"s2_17_18h": 5,
"s2_18_19h": 5,
"s2_19_20h": 7,
"s2_20_21h": 1,
"s2_21_22h": 0,
"date_debut": "20231007000001",
"hpjmax_hor": "S1_S2_8_9H",
"hpjmax_nbr": "12",
"hpmmax_hor": "S1_S2_8_9H",
"hpmmax_nbr": "12",
"hpsmax_hor": "S1_S2_17_18H",
"hpsmax_nbr": "10",
"s1_s2_7_8h": 10,
"s1_s2_8_9h": 12,
"id_voie_ign": null,
"s1_s2_9_10h": 7,
"geo_point_2d": {
"lat": 47.4993758922,
"lon": -0.5234329206499999
},
"s1_s2_16_17h": 7,
"s1_s2_17_18h": 10,
"s1_s2_18_19h": 7,
"s1_s2_19_20h": 10,
"s1_s2_20_21h": 3,
"s1_s2_21_22h": 0
}Record 3obs: — · tmja: 1587
{
"obs": null,
"tmja": 1587,
"tmjo": 1897,
"tmjw": 913,
"voie": "Rue Paul Bert",
"annee": "2023",
"sens1": "Vers Rue Chateaugontier (Nord-Ouest",
"sens2": "Vers Rue Rabelais (Sud-Est)",
"hpjmoy": "127",
"hpmmoy": "135",
"hpsmoy": "123",
"source": "ANGERS LOIRE METROPOLE - DIRECTION TRANSPORTS DEPLACEMENTS",
"commune": "ANGERS",
"s1_7_8h": 64,
"s1_8_9h": 90,
"s2_7_8h": 62,
"s2_8_9h": 88,
"tmja_s1": 776,
"tmja_s2": 811,
"tmjo_s1": 934,
"tmjo_s2": 964,
"tmjw_s1": 438,
"tmjw_s2": 475,
"troncon": "Entre Rue Desjardins et Rue Chateaugontier",
"campagne": "2023/10",
"date_fin": "20231013",
"num_cptr": 84,
"s1_9_10h": 55,
"s2_9_10h": 47,
"geo_shape": {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.5497644751,
47.4650290287,
0
],
[
-0.5495813097,
47.4652455881,
0
]
]
},
"properties": {}
},
"s1_16_17h": 73,
"s1_17_18h": 99,
"s1_18_19h": 78,
"s1_19_20h": 52,
"s1_20_21h": 40,
"s1_21_22h": 23,
"s2_16_17h": 56,
"s2_17_18h": 90,
"s2_18_19h": 81,
"s2_19_20h": 62,
"s2_20_21h": 57,
"s2_21_22h": 29,
"date_debut": "20231007000001",
"hpjmax_hor": "S1_S2_17_18H",
"hpjmax_nbr": "189",
"hpmmax_hor": "S1_S2_8_9H",
"hpmmax_nbr": "178",
"hpsmax_hor": "S1_S2_17_18H",
"hpsmax_nbr": "189",
"s1_s2_7_8h": 126,
"s1_s2_8_9h": 178,
"id_voie_ign": null,
"s1_s2_9_10h": 102,
"geo_point_2d": {
"lat": 47.4651373084,
"lon": -0.5496728924000001
},
"s1_s2_16_17h": 129,
"s1_s2_17_18h": 189,
"s1_s2_18_19h": 159,
"s1_s2_19_20h": 114,
"s1_s2_20_21h": 97,
"s1_s2_21_22h": 52
}Record 4obs: — · tmja: 113
{
"obs": null,
"tmja": 113,
"tmjo": 112,
"tmjw": 116,
"voie": "Route d'Angers",
"annee": "2024",
"sens1": "vers déviation de la route n112",
"sens2": "vers route de bouchemaine",
"hpjmoy": "9",
"hpmmoy": "11",
"hpsmoy": "8",
"source": "ANGERS LOIRE METROPOLE - DIRECTION TRANSPORTS DEPLACEMENTS",
"commune": "SAINTE-GEMMES-SUR-LOIRE",
"s1_7_8h": 4,
"s1_8_9h": 13,
"s2_7_8h": 3,
"s2_8_9h": 7,
"tmja_s1": 62,
"tmja_s2": 51,
"tmjo_s1": 62,
"tmjo_s2": 49,
"tmjw_s1": 61,
"tmjw_s2": 55,
"troncon": "Entre rue de la fragonelle et départementale N °112 de Bouchemaine",
"campagne": "2024/10",
"date_fin": "20241013",
"num_cptr": 402,
"s1_9_10h": 3,
"s2_9_10h": 2,
"geo_shape": {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.5568997942,
47.4265466431,
0
],
[
-0.5567413044,
47.4265372462,
0
]
]
},
"properties": {}
},
"s1_16_17h": 4,
"s1_17_18h": 7,
"s1_18_19h": 6,
"s1_19_20h": 2,
"s1_20_21h": 2,
"s1_21_22h": 2,
"s2_16_17h": 4,
"s2_17_18h": 7,
"s2_18_19h": 5,
"s2_19_20h": 3,
"s2_20_21h": 2,
"s2_21_22h": 1,
"date_debut": "20241007000001",
"hpjmax_hor": "S1S2_8_9H",
"hpjmax_nbr": "20",
"hpmmax_hor": "S1S2_8_9H",
"hpmmax_nbr": "20",
"hpsmax_hor": "S1S2_17_18H",
"hpsmax_nbr": "14",
"s1_s2_7_8h": 7,
"s1_s2_8_9h": 20,
"id_voie_ign": null,
"s1_s2_9_10h": 5,
"geo_point_2d": {
"lat": 47.42654194465,
"lon": -0.5568205493
},
"s1_s2_16_17h": 8,
"s1_s2_17_18h": 14,
"s1_s2_18_19h": 11,
"s1_s2_19_20h": 5,
"s1_s2_20_21h": 4,
"s1_s2_21_22h": 3
}Record 5obs: — · tmja: 4487
{
"obs": null,
"tmja": 4487,
"tmjo": 5097,
"tmjw": 2960,
"voie": "Boulevard du maréchal Foch",
"annee": "2023",
"sens1": "Vers Rue Hanneloup (Sud-Ouest)",
"sens2": "Vers Rue Ménage (Nord-Est)",
"hpjmoy": "351",
"hpmmoy": "333",
"hpsmoy": "360",
"source": "ANGERS LOIRE METROPOLE - DIRECTION TRANSPORTS DEPLACEMENTS",
"commune": "ANGERS",
"s1_7_8h": 128,
"s1_8_9h": 232,
"s2_7_8h": 129,
"s2_8_9h": 278,
"tmja_s1": 2227,
"tmja_s2": 2260,
"tmjo_s1": 2530,
"tmjo_s2": 2567,
"tmjw_s1": 1470,
"tmjw_s2": 1491,
"troncon": "Entre Rue d'Alsace et Rue David d'Angers",
"campagne": "2023/10",
"date_fin": "20231013",
"num_cptr": 131,
"s1_9_10h": 111,
"s2_9_10h": 120,
"geo_shape": {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
-0.5487736714,
47.4698733133,
0
],
[
-0.548418796,
47.4696625164,
0
]
]
},
"properties": {}
},
"s1_16_17h": 178,
"s1_17_18h": 282,
"s1_18_19h": 215,
"s1_19_20h": 164,
"s1_20_21h": 128,
"s1_21_22h": 102,
"s2_16_17h": 147,
"s2_17_18h": 255,
"s2_18_19h": 269,
"s2_19_20h": 176,
"s2_20_21h": 131,
"s2_21_22h": 114,
"date_debut": "20231007000001",
"hpjmax_hor": "S1_S2_17_18H",
"hpjmax_nbr": "537",
"hpmmax_hor": "S1_S2_8_9H",
"hpmmax_nbr": "510",
"hpsmax_hor": "S1_S2_17_18H",
"hpsmax_nbr": "537",
"s1_s2_7_8h": 257,
"s1_s2_8_9h": 510,
"id_voie_ign": null,
"s1_s2_9_10h": 231,
"geo_point_2d": {
"lat": 47.46976791484999,
"lon": -0.5485962337
},
"s1_s2_16_17h": 325,
"s1_s2_17_18h": 537,
"s1_s2_18_19h": 484,
"s1_s2_19_20h": 340,
"s1_s2_20_21h": 259,
"s1_s2_21_22h": 216
}Live sample captured at profiling time — values may have changed upstream.
Verification Status
Using the API
Configuration
- Base URL
- https://data.angers.fr/api/explore/v2.1/catalog/datasets/compteurs_velo
License
- ✓ Redistributable
- ✓ Attribution required
Query examples
curl -s 'https://data.angers.fr/api/explore/v2.1/catalog/datasets/compteurs_velo/records?limit=20' -H 'Accept: application/json'First 20 records of the dataset as JSON.
Uses the Opendatasoft Explore v2.1 syntax — supports select, where, group_by and order_by.
Rate limits
Dataset
Volume & freshness
License
No license declared upstream.
Source: opendatasoft
Machine-readable & source
Embed this badge in a README or wiki — it always shows the latest verification state and quality tier.