RATP Open Data API
Free Paris RATP open data API with no key: annual station ridership, in-station air quality measurements, drinking fountains, defibrillators and toilets. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the RATP Open Data API?
RATP Open Data is the Paris transport operator's free, key-free Opendatasoft portal. It publishes annual entry counts for every metro and RER station, continuous air quality measurements from inside several stations, and the locations of drinking fountains, defibrillators and toilets across the network.
Set expectations correctly: this is a statistics and facilities portal, not a live journey planner. RATP's real-time departure data moves through Île-de-France Mobilités under a key, so what you get here is the reference and measurement side — which happens to include some datasets nobody else publishes, such as continuous PM and CO2 readings from platform level at Châtelet and Franklin D. Roosevelt.
The ridership dataset used in the example is the one people reach for most: annual entries per station, ranked, with the interchange lines listed and, for Paris proper, the arrondissement. Gare du Nord at roughly 50 million entries a year is the busiest station in Europe by this measure. The API is standard Opendatasoft Explore v2.1, so `where`, `select`, `group_by` and `order_by` behave as they do on any Opendatasoft portal, and the same query syntax works across every dataset in the catalogue.
Quick facts
- Base URL
https://data.ratp.fr/api/explore/v2.1- Authentication
- No API key or account. French open data published by RATP under an open licence.
- Rate limit
- 5,000 requests per day per IP, reported in `X-RateLimit-Limit` and `X-RateLimit-Remaining`.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the RATP Open Data API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the busiest Paris stations by annual ridership
GET https://data.ratp.fr/api/explore/v2.1/catalog/datasets/trafic-annuel-entrant-par-station-du-reseau-ferre/records?limit=2&order_by=trafic%20DESC
curl 'https://data.ratp.fr/api/explore/v2.1/catalog/datasets/trafic-annuel-entrant-par-station-du-reseau-ferre/records?limit=2&order_by=trafic%20DESC'const res = await fetch("https://data.ratp.fr/api/explore/v2.1/catalog/datasets/trafic-annuel-entrant-par-station-du-reseau-ferre/records?limit=2&order_by=trafic%20DESC");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://data.ratp.fr/api/explore/v2.1/catalog/datasets/trafic-annuel-entrant-par-station-du-reseau-ferre/records?limit=2&order_by=trafic%20DESC", timeout=20)
res.raise_for_status()
print(res.json()){
"total_count": 369,
"results": [
{
"rang": 1,
"reseau": "Métro",
"station": "GARE DU NORD",
"trafic": 49977513,
"correspondance_1": "4",
"correspondance_2": "5",
"correspondance_3": null,
"correspondance_4": null,
"correspondance_5": null,
"ville": "Paris",
"arrondissement_pour_paris": 10
},
{
"rang": 1,
"reseau": "RER",
"station": "GARE DU NORD-RER",
"trafic": 46757083,
"correspondance_1": "B",
"correspondance_2": null,
"correspondance_3": null,
"correspondance_4": null,
"correspondance_5": null,
"ville": "Paris",
"arrondissement_pour_paris": 10
}
]
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(dataset) | path | Required | `/catalog/datasets/{dataset_id}/records` queries one dataset. trafic-annuel-entrant-par-station-du-reseau-ferre |
limit / offset | query | Optional | Page size and offset. `limit` maxes out at 100 per request. 2 |
order_by | query | Optional | Sort expression, for example `trafic DESC`. trafic DESC |
where | query | Optional | Opendatasoft filter expression — `where=ville='Paris'` or a numeric comparison. trafic>10000000 |
select | query | Optional | Choose or compute fields, including aggregates such as `sum(trafic)`. station,trafic |
group_by | query | Optional | Aggregate rows by a field, for totals per line or per municipality. reseau |
(catalog) | path | Optional | `/catalog/datasets` lists every dataset RATP publishes. datasets |
Response fields
total_countinteger- Total matching records across the dataset, not just this page.
resultsarray- The page of records. Fields depend on which dataset you queried.
(ridership) ranginteger- Rank within its network — note metro and RER are ranked separately, so rank 1 appears twice.
(ridership) reseaustring- Network: "Métro" or "RER".
(ridership) stationstring- Station name in upper case, as published.
(ridership) traficinteger- Annual entries at that station.
(ridership) correspondance_1 … _5string- Interchange lines available, null where fewer than five.
(ridership) ville / arrondissement_pour_parisstring / integer- Municipality, and the arrondissement number for stations inside Paris.
What you can build with the RATP Open Data API
- Rank Paris stations by passenger volume for analysis or visualisation
- Map drinking fountains, toilets and defibrillators across the network
- Study in-station air quality measurements over time
- Compare ridership across years using the per-year datasets
- Aggregate footfall by arrondissement or by line
Common errors and how to fix them
Duplicate rank values
Metro and RER are ranked independently within the same dataset.
Fix: Group by `reseau` before interpreting `rang`, or ignore it and sort on `trafic` yourself.
404 NotFoundResource
The dataset id is wrong.
Fix: List `/catalog/datasets` first. Ids are long, hyphenated and often carry a year suffix that changes between editions.
Only 100 records returned
`limit` is capped at 100 per request.
Fix: Page with `offset`, or use `group_by` and aggregate server-side rather than pulling every row.
429 Too Many Requests
The 5,000-per-day IP quota is exhausted.
Fix: These are annual and archival datasets — cache them locally rather than querying live for each page view.
RATP Open Data API — frequently asked questions
Is the RATP API free?
Yes, free with no key or account, at 5,000 requests per day per IP. It is French open data published under an open licence.
Does it provide live metro times?
No. Real-time departures for the Paris network are distributed by Île-de-France Mobilités under a key. This portal covers ridership statistics, air quality measurements and facility locations.
What is the most useful dataset here?
Annual entries per station is the most requested — it ranks every metro and RER station by footfall, with interchange lines and arrondissement attached. The in-station air quality series is the most unusual.
How does the query syntax work?
It is standard Opendatasoft Explore v2.1, so `where`, `select`, `group_by` and `order_by` work the same way on every dataset in the catalogue and on other Opendatasoft portals.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
Percentage Change Calculator
Work out the percentage increase or decrease between an old and a new value. See the absolute change and whether it went up or down, instantly and privately.
RATP Open Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.