
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Extract public ATP, WTA, ITF, and Challenger tennis matches from Flashscore: fixtures, live scores, set-by-set results, players, and surface. Singles and doubles. No login.
Get tennis fixtures, live scores, and results from Flashscore's public day feed: ATP, WTA, ITF, and Challenger, singles and doubles. Each match comes with start time, set scores, players, surface, tournament, and the live game score and server while a match is in progress. No login, no browser, and $0.05 per 1,000 matches.
Pick the days, tours, and statuses you want, then export the matches as JSON, CSV, or Excel.
finished, live, scheduled), and tournament name.0 for today.| Field | Type | Description |
|---|---|---|
dayOffsets | array | Days relative to today, from -7 to 7. 0 is today. |
startUrls | array | Flashscore tennis tournament or match URLs. The tournament name filter is ignored when set. Other sites are skipped. |
maxItems | integer | Maximum matches saved across all days, 1 or more. Default 10. |
matchStatuses | array | finished, live, scheduled, or all. |
tours | array | atp, wta, itf, challenger. Empty means every tour. |
tournaments | array | Case-insensitive partial match on the tournament name. |
proxyConfiguration | object | Proxy for the feed request. Datacenter is the default. |
{
"dayOffsets": ["0"],
"tours": ["atp"],
"matchStatuses": ["all"],
"maxItems": 10
}
Yesterday's finished WTA matches:
{
"dayOffsets": ["-1"],
"tours": ["wta"],
"matchStatuses": ["finished"],
"maxItems": 20
}
One dataset item per match.
| Field | Description |
|---|---|
match_id, match_url, match_date | Match id, link, and start time in UTC. |
match_status, match_type, result_type | SCHEDULED, LIVE, or FINISHED; singles or doubles; NORMAL, RETIREMENT, WALKOVER, DEFAULTED. |
home_players, away_players, home_name, away_name | Players with id, name, nationality, and photo. |
sets, sets_won_home, sets_won_away, winner | Set scores and the winner for finished matches. |
tournament_name, tournament_id, tournament_url, category_name | Tournament and tour label such as ATP - Singles. |
surface | Court surface: hard, clay, grass, carpet, or indoor hard / indoor clay for indoor events. |
current_server, current_game_score_home, current_game_score_away | Live detail: 1 is home, 2 is away. |
A trimmed item from a real run (a scheduled ATP match):
{
"match_id": "KOht3l94",
"match_url": "https://www.flashscore.com/match/KOht3l94/",
"match_date": "2026-10-14T04:00:00",
"match_status": "SCHEDULED",
"match_type": "singles",
"home_players": [
{ "name": "Van De Zandschulp B.", "short_name": "VAN", "nationality": "Netherlands", "slug": "van-de-zandschulp-botic" }
],
"away_players": [
{ "name": "Jodar R.", "short_name": "JOD", "nationality": "Spain", "slug": "jodar-rafael" }
],
"home_name": "Van De Zandschulp B.",
"away_name": "Jodar R.",
"tournament_name": "Shanghai (China)",
"tournament_url": "https://www.flashscore.com/tennis/atp-singles/shanghai/",
"category_name": "ATP - Singles",
"surface": "hard",
"sets": null,
"winner": null,
"current_server": null
}
Finished matches include sets, sets_won_home, sets_won_away, winner, and result_type. Times are UTC, written without a timezone suffix.
You pay $0.00005 per match saved, which is $0.05 per 1,000 matches. Platform usage (compute and proxy) is billed on top at the usual rates; datacenter proxy is the default at $1 per GB.
Worked example: a run that saves 6 matches costs 6 x $0.00005 = $0.0003 in result fees. A billed staging run of 6 matches cost about $0.0039 in total including compute and proxy, so platform usage is the larger part on small runs.
No. The match list, scores, and player names are public. If Flashscore starts requiring a login for the list, this actor cannot return it.
It reads a public feed. You are responsible for following Flashscore's terms and the laws that apply to your use of the data.
Each run is a snapshot. Schedule it every few minutes during play for updates. current_server and the game score are filled only while a match is live.
Yes. Paste the tournament URL into startUrls, or put part of the name in tournaments. A match URL returns that match when it falls on one of the selected days.
ATP, WTA, ITF, and Challenger, singles and doubles.
Yes. Schedule runs, start them through the API, and read the dataset in any export format.
round_name and ranking are null, because the day feed does not include them.total_match_duration and per-set duration are null. Tiebreak points are null.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
dayOffsetsarrayOptionaldefault ["0"]Days to fetch
Days relative to today. 0 is today, -1 is yesterday, and 1 is tomorrow. Any mix from -7 to 7.
startUrlsarrayOptionaldefault []Tournament or match URLs
Public Flashscore tennis tournament or match URLs. When set, the tournament name filter is ignored. Other sites are skipped.
maxItemsintegerOptionaldefault 10Maximum matches
Cap on matches saved across all selected days.
Narrow the matches that are saved.
matchStatusesarrayOptionaldefault ["all"]Match status
Limit results to finished, live, or scheduled matches. All returns every match on the selected days. Live is the state at the moment the run fetches the feed.
toursarrayOptionaldefault []Tours
ATP, WTA, ITF, or Challenger. Leave empty for every tour.
tournamentsarrayOptionaldefault []Tournament names
Case-insensitive partial match on the tournament name, such as Shanghai or Wuhan. Ignored when tournament URLs are set.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to fetch the public tennis feed.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| match_id | string | Flashscore match id. |
| match_url | string | Match page URL. |
| match_date | string | Scheduled start, UTC, without a timezone suffix. |
| match_end_timestamp | string | null | When the match ended, UTC. Null when the feed has no end time. |
| match_status | string | SCHEDULED, LIVE, FINISHED, POSTPONED, or CANCELLED. |
| match_type | string | singles or doubles. |
| result_type | string | null | NORMAL, RETIREMENT, WALKOVER, or DEFAULTED. Null until the match is finished. |
| winner | string | null | home or away. Null until the match is finished. |
| walkover_note | string | null | Withdrawal note from the feed, when present. |
| sets_won_home | integer | null | |
| sets_won_away | integer | null | |
| total_match_duration | string | null | Not included. The day feed does not publish match duration. |
| sets | array | null | |
| home_players | array | |
| away_players | array | |
| home_name | string | null | Home player or pair. |
| away_name | string | null | Away player or pair. |
| score | string | null | Set scores, such as 6-1, 2-6, 6-0. |
| tournament_name | string | null | |
| tournament_id | string | null | |
| tournament_url | string | null | |
| category_name | string | null | |
| surface | string | null | |
| round_name | string | null | Null. The day feed does not include the round. |
| current_server | integer | null | 1 when home is serving, 2 when away is serving. Live matches only. |
| current_game_score_home | string | null | |
| current_game_score_away | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Match | One saved tennis match. | $0.00005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/flashscore-tennis-scraper').call({
"dayOffsets": [
"0"
],
"tours": [
"atp"
],
"maxItems": 10
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/flashscore-tennis-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/flashscore-tennis-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Results of yesterday's completed tennis matches.
Scheduled tennis matches for today and tomorrow.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.