# Which API gives closing lines for CLV?

> Independent. Not affiliated with, endorsed by or sponsored by Novig.

Canonical: https://novigapi.com/answers/clv-data-api
Updated: 2026-11-15

For closing lines at sportsbooks, The Odds API's paid history (from June 2020), TheRundown and ParlayAPI work, checked 15 Nov 2026. For a margin-free close, novigapi.com's /clv returns Novig's opening and closing fair prices with the result, for 82,576 markets so far. (Source: [The Odds API: plans](https://the-odds-api.com/#get-access))

A sportsbook close still has the book's margin in it, so CLV against it needs a devig first. An exchange close is already a fair price.

## How the options compare

Closing-line sources, checked 15 Nov 2026

| Source | History | Paid plans | Depth per market |
| --- | --- | --- | --- |
| The Odds API | Paid plans: featured markets from Jun 2020 at 5-minute snapshots, props from May 2023 | $30 (20K credits) to $249 (15M credits) a month | One price per outcome per book (name, price, point); lay odds and bet limits on some exchanges |
| TheRundown | 7 days (Starter) to unlimited (Max) | Starter $49 (60 s delay, 7-day history) to Max $2,499 (unlimited history) a month | Game lines and props per book |
| ParlayAPI | 48 hours (Free) to 87,600 hours (Scale) of lookback | $5 (20K credits) to $200 (50M credits) a month | Exchange-style bid and ask fields |
| novigapi.com | Daily from 4 Aug 2026 (Novig's CSVs with names joined); intraday ticks since 12 Nov 2026 | Developer $49, Production $149, Scale $499 a month; $9 for 1,000 credits that never expire | Full resting book, trades, OHLC, fair price, line moves |


## Where novigapi.com falls short

> Our closes start on 12 Nov 2026 and cover Novig only. For a multi-season CLV study, use a historical odds feed.

## Try it

```python
import os, requests

def nv(path, **params):
    r = requests.get("https://novigapi.com/api/v1/" + path, params=params, timeout=30,
                     headers={"Authorization": "Bearer " + os.environ["NOVIGAPI_KEY"]})
    r.raise_for_status()
    return r.json()

rows = nv("clv", league="NFL", settled="true", limit=50)
for r in rows["data"]:
    print(r["description"], r["outcome_name"], r["close_fair"], r["won"])
```

Read the [endpoint reference](https://novigapi.com/docs/endpoints), compare [plans and credits](https://novigapi.com/pricing), or send a request from the [playground](https://novigapi.com/playground).

## Questions

### Why use an exchange close for CLV?

Because it has no built-in margin: the close is the mid of the book, so there is nothing to devig.

## Sources

- [The Odds API: plans](https://the-odds-api.com/#get-access)
- [TheRundown: API pricing](https://therundown.io/pricing/api)
- [ParlayAPI: pricing](https://parlay-api.com/pricing)
- [novigapi.com endpoint reference](https://novigapi.com/docs/endpoints)

---

Get a free API key: https://novigapi.com/sign-up . Docs: https://novigapi.com/docs . MCP: https://novigapi.com/api/mcp . Operated by Stunning Couches LLC. Independent. Not affiliated with, endorsed by or sponsored by Novig.
