Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) at a glance
Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes book, feed, sport, league and home, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.40 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $1.40 per 1,000 results (Free plan), from $0.80 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 21 options
Collect live and prematch betting odds from 1xBet, Melbet, Linebet and Paripulse. Give it the brands and feeds you want and get one row per event with its 1X2 prices, over/under lines, teams, league and start time.
What Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) can do
- Four bookmakers, one run. 1xBet, Melbet, Linebet and Paripulse are covered together in the same call, so you can compare their prices on the same events.
- Prematch and live, your choice. Pull upcoming fixtures, in-play events with the current score, or both feeds in the same run.
- Full 1X2 and over/under pricing. Home, draw and away decimal odds, every over/under line, plus the complete flattened market list so no price is left out.
- Bulk feed or a single match. Run a broad feed across sports and leagues, or switch to URL mode and paste the exact match links you care about.
- Reads the bookmakers' own public feed. No login, no account and no bet placed, just the same odds data the site itself shows its visitors.
- Fails loud, not quiet. If every bookmaker or every pasted link comes back unreadable, the run stops with an error message instead of reporting an empty dataset as a success.
Choose what to collect
These inputs let you configure Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse). Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring | Bulk feed or Specific match URLs. Line, Live and Both read the matching feeds (they set Feeds for you); if Match URLs are filled they are fetched instead. |
bookmakersarray | Which brands to collect. Leave empty for all four. |
feedsarray | prematch = upcoming events; live = in-play events (includes the current score). |
eventUrlsarray | Match page URLs, event-detail API URLs (.../LineFeed/GetGameZip?id=...) or bulk feed API URLs (.../main-line-feed/v3/games1x2?...) from 1xbet.com, melbet.com, linebet.com or paripulse.com. Bare event ids are not supported (the id alone doesn't say which bookmaker it belongs to). Left untouched in URL mode, the two example URLs are scraped. |
matchUrlsarray | Same as Match URLs above; both lists are combined and force URL mode. |
sportsarray | Keep only events from these sports: sport names (Football, Tennis), numeric sport ids (1 = Football), or all. Leave empty for every sport in the feed. |
leagueUrlsarray | Keep only events from these leagues: a league page URL (.../line/football/118593-uefa-europa-league) or the numeric league id. Empty = every league. |
Show 14 more inputs
| Input | What it controls |
|---|---|
eventsPerRequestinteger | How many events each feed request asks for. The source caps this at 40; higher values are refused. |
maxEventsinteger | Stop after this many events. 0 = no limit. |
maxMatchesinteger | Same as Max events (used when Max events is 0). 0 = no limit. |
includeOutcomesboolean | Adds the outcomes array (every priced outcome with a readable name) to each event. |
deepMarketsboolean | Fetch every event's full market list including sub-games (corners, cards, halves) in bulk mode. Costs one extra request per event. URL mode always returns the full market list. |
resumeFromRunIdstring | Run ID of an earlier run of this actor. Events it already collected are not collected or charged again. |
incrementalModeboolean | Remember each event between runs and label every row NEW, UPDATED or REAPPEARED. Unchanged events are skipped and not charged. In URL mode with match links, a pasted event that stops answering is reported once as EXPIRED. Bulk feeds are a bounded window, so they never report EXPIRED. |
stateKeystring | Name of the remembered baseline. Leave empty to derive it from your bookmakers, feeds, filters and links. Use the same key on every scheduled run. |
emitUnchangedboolean | Incremental mode only. Output events that did not change as UNCHANGED rows (each is a charged row). |
emitExpiredboolean | Incremental mode only. Report a pasted match whose id stopped answering as EXPIRED (a charged row). |
ignoreFieldsForChangesarray | Field names (dotted paths allowed, e.g. totals.odds) that never count as a change. scrapedAt is always ignored. |
mcpConnectorsarray | Optionally send a readable summary of each event into the apps you already use via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify Settings, then select it here. Notion gets a page per event; other connectors receive a best-effort write. Leave empty to skip. The dataset is never changed. |
notionParentPageUrlstring | URL or id of the Notion page under which event pages are created. Required for the Notion export, ignored by other connectors. |
maxNotifyListingsinteger | Cap on events written to each selected connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
bookmakerBook (text)feedFeed (text)sportSport (text)leagueLeague (text)homeHome (text)awayAway (text)startTimeStarts (date)scoreHomeScore H (number)scoreAwayScore A (number)oddsHome1 (number)oddsDrawX (number)oddsAway2 (number)Show 11 more fields
eventIdEvent (text)totalsOver/under (array)marketsmarketsisLiveLive (boolean)periodPeriod (text)statusStatus (text)scoreScore (text)changeTypeChange (text)changedFieldsChanged fields (array)firstSeenAtFirst seen (text)lastSeenAtLast seen (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"recordType": "event",
"bookmaker": "linebet",
"feed": "prematch",
"eventId": "812345678",
"num": 305214,
"sport": "Football",
"sportId": 1,
"league": "Sample League",
"leagueId": 55210,
"home": "Home Team",
"away": "Away Team",
"startTime": "2026-11-08T19:00:00.000Z",
"startTs": 1794164400,
"period": null,
"scoreHome": null,
"scoreAway": null,
"isLive": false,
"oddsHome": 2.05,
"oddsDraw": 3.45,
"oddsAway": 3.65,
"totals": [
{
"line": 2.5,
"over": 1.9,
"under": 1.85
}
],
"markets": [
{
"group": 1,
"type": 1,
"line": null,
"odds": 2.05
},
{
"group": 1,
"type": 2,
"line": null,
"odds": 3.45
},
{
"group": 1,
"type": 3,
"line": null,
"odds": 3.65
},
{
"group": 17,
"type": 9,
"line": 2.5,
"odds": 1.9
},
{
"group": 17,
"type": 10,
"line": 2.5,
"odds": 1.85
}
],
"url": "https://linebet.com/en/line",
"scrapedAt": "2026-11-01T09:15:00.000Z"
}Ways to use this data
- Odds comparison tools: line up 1X2 and totals prices from four bookmakers side by side on the same fixture.
- Line movement tracking: schedule repeat runs and build your own time series of how a match's prices shift before kickoff.
- Live odds dashboards: feed in-play events, their current score and live prices into your own site or bot.
- Sports content and tipster sites: back match previews and picks with real, sourced pricing instead of guesses.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) return?
The documented output for Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) includes book, feed, sport, league, home, away, starts and score h. Availability of each field depends on the source page and the selected mode.
How much does Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse) cost?
It costs $1.40 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Why did my run fail instead of returning an empty dataset?
If every bookmaker feed you asked for comes back unreadable, or answers with literally zero events, the run is reported as failed rather than a plain empty success, since a bookmaker's bulk feed being genuinely empty is rare and usually signals a block instead. The same applies in URL mode: if none of the pasted links resolve, whether that is an unsupported host or an event id not found on either endpoint (typically because the match already finished), the run fails. A clean empty result only happens when your sports filter excludes every event a feed actually returned. Run it again in a few minutes, or with a different link.
What happens once a match kicks off or finishes?
There is no separate status field. A prematch row simply has no score (scoreHome and scoreAway are null); a live row carries whatever current score its feed reports. Bookmakers commonly move an event from the prematch endpoint to the live one once it kicks off, but a pasted prematch link can stop resolving at that point too, not only once the match finishes; either way, once neither endpoint recognizes an event's id at all, the actor can no longer return it, so a finished match disappears from later runs rather than showing up as a "finished" record.
Can I use it with AI agents?
Yes. Call it from any Apify integration, or trigger it from your own code with the apify-client library shown above.
