SofaScore API Scraper avatar

SofaScore API Scraper

Pricing

from $1.00 / 1,000 dataset rows

Go to Apify Store
SofaScore API Scraper

SofaScore API Scraper

Scrape live scores, scheduled fixtures, match detail and search results directly from SofaScore's public backend API.

Pricing

from $1.00 / 1,000 dataset rows

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What does SofaScore API Scraper do?

SofaScore API Scraper extracts live scores, scheduled fixtures, full match detail, and search results straight from SofaScore's own backend REST API -- the same one the official Android app talks to. It covers football, basketball, tennis, cricket, esports, motorsport, and every other sport SofaScore tracks. Because it hits the API directly instead of rendering pages, it's fast, cheap, and returns clean structured JSON rather than scraped HTML.

Run it on the Apify platform to get scheduling, an API for pulling results, webhook/integration support, and automatic dataset export -- no need to babysit a script.

Why use SofaScore API Scraper?

  • Sports betting & odds research -- pull live scores and fixtures on a schedule to feed models or dashboards.
  • Fantasy sports tools -- player/team stats and match detail for lineup or projection tools.
  • Media & content sites -- auto-populate scoreboards and fixture lists.
  • Data analysis -- build historical match datasets by sweeping date ranges.

How to use SofaScore API Scraper

  1. Click Try for free (or Start) on the Actor page.
  2. Pick a Mode: live events, scheduled events for a date range, event_detail for specific match IDs, or search.
  3. Set the relevant fields (sport, date range, event IDs, or search query).
  4. Click Start and wait for the run to finish.
  5. Open the Dataset tab to view, export, or download results (JSON, CSV, Excel, HTML, and more).

Input

FieldTypeDescription
modestringlive, scheduled, event_detail, or search
sportstringSofaScore sport slug, e.g. football, basketball, tennis (used by live/scheduled)
dateFrom / dateTostringYYYY-MM-DD range for scheduled mode (inclusive)
maxPagesintegerMax pages per day for scheduled mode (pagination is 1-indexed)
eventIdsarrayEvent IDs to fetch full detail for, in event_detail mode
searchQuerystringFree-text query for search mode (team, player, tournament)
fetchEventDetailsbooleanFor live/scheduled, fan out to full match detail per event (more requests)
maxItemsintegerStop after this many dataset items (0 = unlimited)
requestDelaySecsnumberDelay between outgoing API calls
proxyConfigurationobjectOptional; SofaScore isn't IP rate-limited, so this is rarely needed

See the Input tab for the full schema with defaults.

Output

Output is flattened -- one level deep, no nested objects -- so it drops straight into CSV/Excel without post-processing.

Example dataset item for a live/scheduled event:

{
"kind": "event",
"id": 16860578,
"slug": "port-city-fc-golden-warriors-fc",
"startTimestamp": 1755532800,
"sport": "football",
"tournament": "NPSL",
"category": "USA",
"country": "USA",
"homeTeamId": 452321,
"homeTeam": "Port City FC",
"awayTeamId": 452322,
"awayTeam": "Golden Warriors FC",
"homeScore": 1,
"awayScore": 0,
"statusType": "inprogress",
"statusDescription": "2nd half"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data table

FieldDescription
kindevent, event_detail, or search_result -- identifies the record shape
id / slugSofaScore event or entity ID and URL slug
startTimestampUnix start time
sport, tournament, uniqueTournament, category, country, round, roundNameCompetition context
homeTeamId / homeTeam / homeTeamCountry, awayTeamId / awayTeam / awayTeamCountryTeam info
homeScore / awayScoreCurrent score
statusCode / statusType / statusDescriptionMatch status (not started / in progress / finished, period)
venue / venueCity / refereePresent on event_detail items when SofaScore has the data
resultType, score, entityId, entityName, entitySlug, entityType, teamId, teamNamesearch_result items only -- matched team/player/tournament and its parent team

Pricing / Cost estimation

This Actor uses pay-per-event pricing: $1 per 1,000 dataset rows ($0.001/row), charged only for rows actually written to the dataset (plus standard Apify platform usage). Turning on fetchEventDetails or sweeping wide date ranges produces more rows -- use maxItems and maxPages to keep spend predictable, or set a max run charge cap in the run's advanced options.

Tips or Advanced options

  • Leave fetchEventDetails off for a fast overview pass; turn it on only when you need venue/referee-level detail.
  • For historical sweeps, narrow dateFrom/dateTo and set maxItems to avoid runaway runs.
  • page=1 is the first page of scheduled events for a given date -- page=0 always returns an empty list (undocumented API quirk).
  • Schedule this Actor to run daily/hourly via the Apify Schedules feature for always-fresh data.

FAQ, disclaimers, and support

This Actor calls SofaScore's public, unauthenticated backend API (no login, no key required, access-control-allow-origin: *). It's provided for research and legitimate data-integration use; you're responsible for complying with SofaScore's Terms of Service in your jurisdiction and use case. SofaScore's own FAQ states they don't officially license API access due to data-provider agreements, so treat this as an unofficial integration, not a supported one.

Current coverage: live/scheduled events, single-event detail, and search. Lineups, in-match statistics (shots, possession, xG), incidents (goals/cards/subs timeline), head-to-head history, league standings, odds, and team/player profile data are not yet covered -- betting, fantasy, and deep-analytics use cases that need those will require extending the Actor with additional modes.

Found a bug or need a custom field/endpoint added? Open an issue in the Actor's Issues tab, or reach out for a custom scraping solution.