Novig APInovig.com ↗
Access Novig P2P exchange data: live game lines, order books, trade history, futures, and featured parlays for NFL, NBA, MLB, NCAAF, and EPL.
What is the Novig API?
The Novig API exposes 7 endpoints covering the full depth of the Novig peer-to-peer sports betting exchange, from league event boards to per-market order books and fill history. get_event_markets returns every tradable market for a single event — spreads, totals, moneylines, player props, and first-half lines — while get_market_order_book delivers live price levels aggregated by implied probability. Prices throughout are expressed as implied probabilities between 0 and 1.
curl -X GET 'https://api.parse.bot/scraper/83cd45d8-60e7-4c03-85ef-fed078f31bb8/list_events?league=NFL' \ -H 'X-API-Key: $PARSE_API_KEY'
Lists the game events on a league's trading board with the headline lines (spread, total and winner/moneyline markets) for each game, team records and rankings, live score and clock, plus the count of additional markets and total traded volume. Boards for large leagues are split into groups (e.g. All, Top 25, conferences); available_groups lists them and group selects one, defaulting to All. Leagues without groups (NFL, MLB, EPL) ignore group unless it is set, in which case an empty list is returned. An unknown league code is rejected as stale_input; a league that is out of season returns an empty events list. One round trip, no pagination. Prices are implied probabilities (0-1).
| Param | Type | Description |
|---|---|---|
| group | string | Board group title, matched case-insensitively against available_groups (e.g. All, Top 25, SEC, Big 10 for NCAAF). Omitted = All. A group not present on the board yields an empty events list. |
| leaguerequired | string | League code as used on the site. Confirmed values this run: NCAAF, NFL, MLB, EPL, NBA (NBA returned an empty off-season board). Other codes the site advertises in its live ticker (e.g. NHL, NCAAB, WNBA, MLS, La Liga, Serie A, Bundesliga, Ligue 1, Champions League) are accepted by the site but were not exercised. |
{
"type": "object",
"fields": {
"count": "number of events returned",
"group": "group actually selected, null when the board has no groups",
"events": "array of game events; each has event_id, title, scheduled_start (ISO UTC), status (OPEN_PREGAME/OPEN_INGAME), is_live, live_state (period/clock/down/distance when live), home_team/away_team (team_id, name, symbol, conference, division, ranking, wins/losses/draws), home_score/away_score, home_moneyline_price/away_moneyline_price, markets (headline columns: title, market_id, outcomes[outcome_id,label,price]), other_market_count, total_volume (USD)",
"league": "league code echoed by the site",
"available_groups": "array of group titles on this board (empty when ungrouped)"
},
"sample": {
"data": {
"count": 13,
"group": "SEC",
"events": [
{
"sport": "American Football",
"title": "Texas @ Tennessee",
"league": "NCAAF",
"status": "OPEN_PREGAME",
"is_live": false,
"markets": [
{
"title": "Spread",
"outcomes": [
{
"label": "-4.5",
"price": 0.52,
"outcome_id": "01a0b554-cead-7443-9d9c-430c768a4cb9"
},
{
"label": "+4.5",
"price": 0.485,
"outcome_id": "01a0b554-cead-7443-9d9c-42f51b5cdd31"
}
],
"market_id": "01a0b554-cead-7443-9d9c-42e790b79e46"
},
{
"title": "Total",
"outcomes": [
{
"label": "O 54.5",
"price": 0.525,
"outcome_id": "01a0b554-ceae-73d0-949a-cfda8984d65e"
},
{
"label": "U 54.5",
"price": 0.48,
"outcome_id": "01a0b554-ceae-73d0-949a-cfe191d38733"
}
],
"market_id": "01a0b554-ceae-73d0-949a-cfc870b9bea0"
},
{
"title": "Winner",
"outcomes": [
{
"label": null,
"price": 0.65,
"outcome_id": "01a0b554-cead-7443-9d9c-42aa2f06d4f1"
},
{
"label": null,
"price": 0.36,
"outcome_id": "01a0b554-cead-7443-9d9c-4297a8b9271b"
}
],
"market_id": "01a0b554-cead-7443-9d9c-428a76d658c5"
}
],
"event_id": "01a0b554-cdf7-7461-a9f5-7083e709f43e",
"away_team": {
"name": "Texas",
"wins": 3,
"draws": 0,
"losses": 0,
"mascot": "Longhorns",
"symbol": "TEX",
"country": null,
"ranking": 1,
"team_id": "d7922ec0-5d12-472e-afd6-57a2a6f46fbd",
"division": "FBS",
"conference": "SEC",
"short_name": "TEX"
},
"home_team": {
"name": "Tennessee",
"wins": 3,
"draws": 0,
"losses": 0,
"mascot": "Volunteers",
"symbol": "TENN",
"country": null,
"ranking": 14,
"team_id": "8ff8fbb6-d8b6-4a09-bc40-b0dedae2526e",
"division": "FBS",
"conference": "SEC",
"short_name": "TENN"
},
"away_score": null,
"home_score": null,
"live_state": null,
"possession": null,
"total_volume": 356594.98,
"scheduled_start": "2026-09-26T16:00:00.000Z",
"other_market_count": 5,
"away_moneyline_price": 0.65,
"home_moneyline_price": 0.36
}
],
"league": "NCAAF",
"available_groups": [
"All",
"Top 25",
"SEC",
"Big 10"
]
},
"status": "success"
}
}About the Novig API
Event and Market Discovery
list_events accepts a league code (NFL, NBA, MLB, NCAAF, EPL) and an optional group filter (e.g. "Top 25", "SEC", "Big 10" for NCAAF) and returns each game's event_id, title, scheduled_start, live status (OPEN_PREGAME or OPEN_INGAME), team records and rankings, live score and clock, traded volume, and the headline spread, total, and moneyline markets. The available_groups array tells you what board groups exist before you filter. list_live_events provides a cross-league ticker with period, time_remaining, and current moneyline prices for in-progress and upcoming games.
Order Book and Trade History
get_market_order_book takes a market_id and returns resting orders aggregated into price levels (price, qty) sorted best-first for each outcome, alongside best_price, order_count, total_qty, fee_coefficient, fee_charged timing, and a monotonically increasing book_sequence for change detection. get_market_trades returns the chronological fill history for a market — each fill carries outcome_id, created_at, price, qty, and cost in USD — with a limit parameter (1–1000) controlling how many recent fills are returned. total_fills tells you the full history depth on the exchange.
Futures and Parlays
list_futures returns futures groups for a league, each with a market_type, title, and one market per competitor exposing Yes/No outcome prices. list_featured_parlays returns site-curated parlays with parlay_type (Regular, SGP, SGP+), the combined price as an implied probability, parlay_count (users who placed the parlay), and every leg's outcome_id, market_id, event_id, and label. Leagues with no active futures or parlays return empty arrays rather than errors.
Market Filtering and Depth
get_event_markets supports a market_type filter parameter accepting codes like SPREAD, TOTAL, MONEY, TEAM_TOTAL, MONEY_1H, SPREAD_1H, and TOTAL_1H. The response includes market_types — the full list of distinct codes available on the event before filtering — so you can enumerate available market types without trial and error. Each market includes is_consensus to identify the headline line when multiple strikes exist for the same market type.
The Novig API is a managed, monitored endpoint for novig.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when novig.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official novig.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a real-time odds dashboard comparing Novig implied probability prices across NFL spreads and totals using
list_eventsheadline markets. - Monitor order book depth changes for a specific player prop by polling
get_market_order_bookand trackingbook_sequenceincrements. - Reconstruct a market's price history chart from
get_market_tradesfill data, usingpriceandcreated_atper fill. - Identify sharp line movement by comparing
is_consensusspreads fromget_event_marketsagainst the current best_price in the order book. - Track futures market liquidity for NFL Super Bowl Winner markets using
list_futuresoutcome prices andget_market_order_booktotal_qty. - Analyze popular parlay combinations by aggregating
parlay_countand leg structures fromlist_featured_parlaysacross multiple leagues. - Power a live scoreboard widget with period, clock, and score data from
list_live_eventsfiltered to specific leagues via theleaguesparameter.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Novig have an official developer API?+
What does `get_event_markets` return beyond the headline lines shown on the board?+
get_event_markets returns every open, tradable market for an event: moneyline, spreads and totals at every available strike, team totals, first-half versions of each market type, and player props. Use the market_type parameter to filter to a single type (e.g. SPREAD or TOTAL_1H). The market_types array in the response lists all distinct type codes available on the event before filtering, and is_consensus flags the headline line among multiple strikes for the same type.Does the API cover historical settled markets or only open ones?+
get_event_markets or get_market_order_book. get_market_trades exposes fill history for a market via total_fills, but only while the market is accessible. You can fork this API on Parse and revise it to add a settled-markets endpoint if that data becomes available on the exchange.Are all leagues covered at all times, or do some return empty data?+
list_futures returns an empty array for leagues with no active futures (EPL and off-season NBA were observed returning empty). list_events for NBA returned an empty event list during off-season testing. The available_groups field in list_events responses tells you what board groups currently exist for a league. Coverage of additional leagues beyond NFL, NBA, MLB, NCAAF, and EPL is not currently supported. You can fork this API on Parse and revise it to add other league codes.How are prices represented, and what does the fee_coefficient in the order book mean?+
get_market_order_book also returns fee_coefficient (the exchange's fee on winnings) and fee_charged indicating when the fee applies, such as WHEN_LIVE. These fields let you calculate the net cost of a position including fees.