MotoGP Riders, Results & Standings avatar

MotoGP Riders, Results & Standings

Pricing

from $2.71 / 1,000 results

Go to Apify Store
MotoGP Riders, Results & Standings

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

Scraper Master

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

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

ModeYou get
calendarOne row per event: dates, circuit, country and status.
resultsOne row per rider per session: position, rider, number, team, constructor, points, time, gap, laps and result status.
standingsRider, team or constructor championship table for a season and class.
ridersOne 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

FieldMeaning
modecalendar, results, standings or riders.
yearSeason, e.g. 2025.
categoryMotoGP, Moto2, Moto3, MotoE (and ALL in calendar mode).
eventOptional comma separated filter: event code (THA, ARG, ITA), part of an event or circuit name, or an event id.
sessionTypeResults mode: RAC, SPR, Q2, Q1, Q (both), FP1, FP2, FP (all), PR, WUP, ALL.
standingsTyperider, team or constructor.
riderIdsRiders mode: rider UUIDs or numeric legacy ids of current riders.
includeCareerStatsRiders mode: add career totals (one extra request per rider). Default on.
includeBiographyRiders mode: add the English biography as plain text. Default off.
maxItemsUpper 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

FieldDescription
season, categorySeason year and class filter (null when ALL).
eventId, eventCode, eventName, sponsoredNameEvent identifiers and names.
dateStart, dateEndEvent dates (YYYY-MM-DD).
circuit, circuitPlace, circuitNation, country, countryIsoWhere it takes place.
statusFINISHED, CURRENT or NOT-STARTED.
isTestTrue for pre-season and in-season tests.
circuitInfoPdfLink to the circuit information sheet.

Results

FieldDescription
season, category, eventCode, eventName, circuit, countryEvent context.
sessionType, sessionNumber, sessionName, sessionDate, weather, trackConditionSession context.
position, classified, resultStatusFinishing position (null if not classified), and the feed's status code (INSTND classified, OUTSTND retired/not classified, and others).
riderId, riderLegacyId, riderName, riderNumber, riderCountry, riderCountryIsoRider.
team, constructorTeam and bike manufacturer.
pointsPoints awarded (races and sprints).
timeRace time of the rider (races and sprints).
bestLapTime, bestLapNumber, topSpeedKmhPractice and qualifying sessions.
gapToFirst, gapToPrevious, lapsBehindGaps; for retirements lapsBehind is the number of laps not completed.
laps, averageSpeedKmhLaps completed and average speed.

Standings

FieldDescription
standingsType, season, category, positionTable identity and rank.
nameRider, team or constructor name.
riderId, riderLegacyId, riderNumber, country, team, constructorRider table only.
points, raceWins, podiums, sprintWins, sprintPodiumsTotals (sprintPodiums in rider table only).
eventsCounted, riders, teams, computedFromSessionsTeam and constructor tables only.

Riders

FieldDescription
riderId, riderLegacyId, fullName, firstName, lastName, nicknameIdentity.
riderNumber, shortCode, team, sponsoredTeam, constructor, inGrid, riderTypeTeam and number for the chosen season.
nationality, nationalityIso, birthDate, birthPlace, age, heightCm, weightKgPersonal data.
firstSeason, retired, retiredYear, careerSeasonsCareer span.
careerStatsObject: raceStarts, grandPrixWins, sprintWins, podiums, poles, raceFastestLaps, worldTitles, winsByCategory, titlesByCategory, firstGrandPrix.
profilePicture, socialMedia, biographyExtras (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.
  • riders mode 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 (flagged isTest) but skipped by results and 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}'