MotoGP Riders, Results & Standings
Pricing
from $2.71 / 1,000 results
MotoGP Riders, Results & Standings
MotoGP, Moto2, Moto3 and MotoE data: season calendar, session results, rider/team/constructor standings and rider profiles with career stats. Export to JSON, CSV or Excel.
Pricing
from $2.71 / 1,000 results
Rating
0.0
(0)
Developer
Scraper Master
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Collect structured motorcycle Grand Prix data for MotoGP, Moto2, Moto3 and MotoE: the season calendar, the classification of every session, the championship tables and detailed rider profiles. Everything comes from the public JSON feed that the official motogp.com website itself reads, so there is no HTML scraping and no login.
What you can do
| Mode | You get |
|---|---|
calendar | One row per event: dates, circuit, country and status. |
results | One row per rider per session: position, rider, number, team, constructor, points, time, gap, laps and result status. |
standings | Rider, team or constructor championship table for a season and class. |
riders | One row per rider: identity, birth data, team and number for the season, and optional career statistics. |
Every mode honors maxItems. If a request fails (after several retries) the run keeps going and writes an error row (error: true) instead.
Input examples
Calendar of the 2025 MotoGP season:
{ "mode": "calendar", "year": 2025, "category": "MotoGP", "maxItems": 30 }
Race result of the Thai Grand Prix, MotoGP class:
{ "mode": "results", "year": 2025, "category": "MotoGP", "event": "THA", "sessionType": "RAC", "maxItems": 30 }
Qualifying (both parts) for two events in Moto3:
{ "mode": "results", "year": 2025, "category": "Moto3", "event": "ARG,ITA", "sessionType": "Q", "maxItems": 100 }
Constructor championship:
{ "mode": "standings", "year": 2025, "category": "MotoGP", "standingsType": "constructor" }
All Moto2 riders of 2026 with career statistics:
{ "mode": "riders", "year": 2026, "category": "Moto2", "includeCareerStats": true, "maxItems": 40 }
Specific riders by id:
{ "mode": "riders", "riderIds": ["23e50438-a657-4fb0-a190-3262b5472f29", "8688"], "year": 2025 }
Input fields
| Field | Meaning |
|---|---|
mode | calendar, results, standings or riders. |
year | Season, e.g. 2025. |
category | MotoGP, Moto2, Moto3, MotoE (and ALL in calendar mode). |
event | Optional comma separated filter: event code (THA, ARG, ITA), part of an event or circuit name, or an event id. |
sessionType | Results mode: RAC, SPR, Q2, Q1, Q (both), FP1, FP2, FP (all), PR, WUP, ALL. |
standingsType | rider, team or constructor. |
riderIds | Riders mode: rider UUIDs or numeric legacy ids of current riders. |
includeCareerStats | Riders mode: add career totals (one extra request per rider). Default on. |
includeBiography | Riders mode: add the English biography as plain text. Default off. |
maxItems | Upper limit of result rows. Error rows are not counted. |
Output fields
Rows are flat JSON objects; the mode field tells which table a row belongs to.
Calendar
| Field | Description |
|---|---|
season, category | Season year and class filter (null when ALL). |
eventId, eventCode, eventName, sponsoredName | Event identifiers and names. |
dateStart, dateEnd | Event dates (YYYY-MM-DD). |
circuit, circuitPlace, circuitNation, country, countryIso | Where it takes place. |
status | FINISHED, CURRENT or NOT-STARTED. |
isTest | True for pre-season and in-season tests. |
circuitInfoPdf | Link to the circuit information sheet. |
Results
| Field | Description |
|---|---|
season, category, eventCode, eventName, circuit, country | Event context. |
sessionType, sessionNumber, sessionName, sessionDate, weather, trackCondition | Session context. |
position, classified, resultStatus | Finishing position (null if not classified), and the feed's status code (INSTND classified, OUTSTND retired/not classified, and others). |
riderId, riderLegacyId, riderName, riderNumber, riderCountry, riderCountryIso | Rider. |
team, constructor | Team and bike manufacturer. |
points | Points awarded (races and sprints). |
time | Race time of the rider (races and sprints). |
bestLapTime, bestLapNumber, topSpeedKmh | Practice and qualifying sessions. |
gapToFirst, gapToPrevious, lapsBehind | Gaps; for retirements lapsBehind is the number of laps not completed. |
laps, averageSpeedKmh | Laps completed and average speed. |
Standings
| Field | Description |
|---|---|
standingsType, season, category, position | Table identity and rank. |
name | Rider, team or constructor name. |
riderId, riderLegacyId, riderNumber, country, team, constructor | Rider table only. |
points, raceWins, podiums, sprintWins, sprintPodiums | Totals (sprintPodiums in rider table only). |
eventsCounted, riders, teams, computedFromSessions | Team and constructor tables only. |
Riders
| Field | Description |
|---|---|
riderId, riderLegacyId, fullName, firstName, lastName, nickname | Identity. |
riderNumber, shortCode, team, sponsoredTeam, constructor, inGrid, riderType | Team and number for the chosen season. |
nationality, nationalityIso, birthDate, birthPlace, age, heightCm, weightKg | Personal data. |
firstSeason, retired, retiredYear, careerSeasons | Career span. |
careerStats | Object: raceStarts, grandPrixWins, sprintWins, podiums, poles, raceFastestLaps, worldTitles, winsByCategory, titlesByCategory, firstGrandPrix. |
profilePicture, socialMedia, biography | Extras (biography only when requested). |
Notes and limitations
- The feed publishes only the rider championship table. Team and constructor tables are calculated by this Actor from the race and sprint classifications of the season (teams add up all their riders, constructors score with their best-placed rider in each session). They match the official logic in normal seasons but may differ in rare edge cases such as penalties applied after a race, so treat them as derived data. They need one request per session, so they take longer than the rider table.
ridersmode lists the current roster for the current season; for older seasons the rider list comes from that season's standings. Career statistics always cover the whole career.- Test events are returned by
calendar(flaggedisTest) but skipped byresultsand the derived tables. - Rows for future sessions do not exist; unfinished events are skipped.
- MotoE is only present in seasons in which it was run, and a few classes have several races per event (shown as Race 1 / Race 2).
- Requests are made politely: at most 3 at a time, with short random pauses and automatic retry with backoff on rate limits and server errors.
- Only public sporting data is collected. Please respect the terms of use of the data source when you reuse it.
Pricing
Each returned data row is one billable result item. Error rows are free. The run stops cleanly when the spending limit you set is reached.
Running locally
npm install./run-test.sh '{"mode":"standings","year":2025,"category":"MotoGP","maxItems":5}'