Free API guide · Updated 26 August 2026

Free Pinnacle odds API: test real odds before you pay

Searching for a free sports odds API for Pinnacle? Start with a real response, not a sales promise. PinnWire gives developers two simple proof paths: a public key=demo for an instant REST check and a private trial key delivered by email for a larger personal quota.

Short answer: PinnWire is the easiest way to verify current Pinnacle odds before choosing a paid plan. The shared demo is available now with no signup at 10 requests per minute and 50 per day total. A private email-delivered trial gives 20 requests per minute and 100 per day. Both include REST access to current live and prematch data; SSE drop alerts and the raw WebSocket are paid-plan features.

Two free ways to start with PinnWire

A free Pinnacle odds API should let you validate the actual contract: authentication, event shape, markets, timestamps, errors and request limits. PinnWire makes that test immediate. Pick the path that fits the first few minutes of your project.

Instant · no signup

Public demo key

Use key=demo on any REST endpoint. It is the fastest way to see a health response or inspect a live market payload.

Limit: 10 requests per minute and 50 per day in one shared bucket across demo callers. REST only. It is a proof key, so a busy benchmark can exhaust it for everyone temporarily.

Do not confuse the two quotas.

demo is shared and smaller. A trial key is private and larger. Neither is unlimited production traffic, and neither includes SSE or raw WebSocket access. The point is to verify PinnWire with confidence before paying for the transport and volume your application actually needs.

Access pathHow to startREST limitPush transportsBest use
Public demokey=demo, no signup10/min · 50/day shared totalNoneInstant endpoint proof
Private trialEmail form; key delivered by email20/min · 100/dayNonePersonal integration test
Stream$89/mo20/min · 100/daySSE dropsLow-volume movement alerts
Pro / Pro+Drops / Scale$89–$219/mo10/s · 10/s · 30/sSSE on Drops/ScaleHigher-volume production

Run a free Pinnacle odds API check in three minutes

You can prove the whole REST path with the public demo. Add a random fresh value to make the request URL unique if a browser, proxy or fetch tool might reuse an old copy.

  1. Check service health. Confirm that the API responds and inspect the feed-update age.
  2. Fetch a real market. Use a sport ID you care about and inspect the event, period and price fields.
  3. Test your client with your private trial. Replace demo with the emailed key once you start polling repeatedly.

1. Verify health and freshness

curl "https://pinnwire.com/v1/health?key=demo&fresh=free-guide-1"

Look for status, generated_at and last_odds_update_seconds_ago. generated_at is the server response time; the health age reports how recently the newest odds frame arrived. They answer different questions and are both useful.

2. Fetch current live odds

curl "https://pinnwire.com/kit/v1/markets?sport_id=1&key=demo&fresh=free-guide-2"

sport_id=1 is Soccer. The same endpoint family covers the documented sports. Inspect the event IDs, market keys, periods.num_0, sides, points and decimal prices. A real payload is a much better integration test than a screenshot.

3. Fetch prematch fixtures

curl "https://pinnwire.com/kit/v1/prematch/fixtures?sport_id=1&key=demo&fresh=free-guide-3"

For a single event, use /kit/v1/details?event_id=N. For compact full-game lines, use /kit/v1/prematch/lines?event_id=N. Every response is JSON and the endpoint family is documented in the PinnWire API docs.

What the free Pinnacle API lets you build

The free REST paths are enough to prove a surprisingly large part of a product. You can build the read side first, then add a paid push transport only when your workflow needs it.

Odds dashboardPoll live and prematch snapshots, format prices and show event state.
Model inputRead line depth, points, periods and freshness fields into a Python or Node workflow.
Line trackerPoll the drops buffer, filter movement and save permitted observations in your own store.

REST endpoint coverage

EndpointWhat it returnsFree access
GET /v1/healthService and feed freshness signalsDemo and trial
GET /kit/v1/markets?sport_id=NCurrent live market snapshotsDemo and trial
GET /kit/v1/prematch/fixtures?sport_id=NUpcoming fixtures and prematch pricesDemo and trial
GET /kit/v1/details?event_id=NOne event, including available market detailDemo and trial
GET /kit/v1/prematch/lines?event_id=NCompact full-game prematch linesDemo and trial
GET /api/dropsRecent detected price drops, with filters and no-vig fieldsDemo and trial

All plans cover the documented 13 sports, live and prematch data, full line depth and available specials. The difference between free and paid is primarily quota and transport: the free keys let you validate the data contract over REST, while paid plans let production traffic and push alerts scale with the application.

Use a free key to test your code, not to hide freshness problems

“Real-time” is only useful when your application can check it. PinnWire puts freshness fields in the response so your client can make a deliberate decision instead of displaying an unqualified timestamp.

  • generated_at appears on every odds REST response and records the server response time.
  • last_odds_update_seconds_ago on /v1/health reports the age of the newest odds frame.
  • last on /kit market responses is an epoch-millisecond compatibility field for the same response moment. It is not the age of the odds.
  • API responses use Cache-Control: no-store. If a fetch layer still serves a stale response, retry with &fresh= plus a random value.
# Make a second URL when checking a cache-sensitive client
curl "https://pinnwire.com/v1/health?key=demo&fresh=839214"
Good acceptance test:

Make the health call twice, compare generated_at, then fetch one live market and one prematch fixture. Log the HTTP status, response timestamp and request count. This gives you a repeatable free Pinnacle API trial instead of an anecdotal “it looked live.”

When a free Pinnacle API key is enough—and when to upgrade

Start with the smallest PinnWire access path that answers your question. That keeps the first integration clear and gives you an obvious upgrade decision.

NeedUseWhy
One-off proof or documentation checkkey=demoNo signup; the shared 10/min and 50/day quota is enough for a quick read.
Personal script, dashboard or model prototypePrivate trial key20/min and 100/day on your own emailed key avoids the shared demo bucket.
Push detected price dropsStream or Pro+DropsSSE is gated to plans that include drop alerts; free REST keys can still poll /api/drops.
Higher-frequency production RESTPro or Scale10 requests per second on Pro, or 30 per second on Scale, with flat-rate billing.
Continuous subscribed market updatesPaid plan + Raw WSThe raw WebSocket is a separate +$89/month add-on and is not enabled on demo or trial keys.

SSE plan gate

/odds-drop and /odds-drop-prematch are server-sent event streams. They require Stream ($89/month), Pro+Drops ($139/month) or Scale ($219/month). A free key can use the same drop data through /api/drops or /v1/drops and poll at its published limit.

WebSocket plan gate

wss://pinnwire.com/ws?key=YOUR_KEY is the optional raw real-time stream for subscribed live and prematch market updates. It requires the +$89/month Raw WebSocket add-on on a paid plan. The demo and trial keys are deliberately REST-only, which makes them safe for evaluating the response shape before adding connection management.

All paid plans are flat-rate: no per-request or per-object metering. See the live pricing and WebSocket guide when your acceptance test is complete.

Get a private Pinnacle API trial key

When the shared demo has answered your first questions, request a private key for your own test loop. On the PinnWire homepage, enter an email address and submit the form. The trial key is sent to that inbox; the API response confirms delivery but never prints the credential.

  1. Use a real inbox you can open. Check spam if the message is not visible immediately.
  2. Put the emailed key in an environment variable. Keep it out of frontend source and public repositories.
  3. Repeat the health and market calls. Confirm your client handles 20/min and 100/day without assuming the demo's 10/min and 50/day quota.
  4. Choose the production plan by behavior. Upgrade for higher REST volume, SSE alerts or the raw WebSocket—not because a free response was hard to inspect.
# Example: keep the private key out of the command history
set PINNWIRE_KEY=pk_your_emailed_key
curl "https://pinnwire.com/v1/health?key=%PINNWIRE_KEY%&fresh=trial-check"

For shell or CI usage, prefer your platform's secret manager. The API key is the only credential needed for REST, and the documentation also accepts the x-api-key header.

Small Python quickstart

This example uses ordinary HTTP so you can move from the public demo to the private trial without rewriting your client. It prints the freshness signal and the first few events; it does not assume that a particular sport always has a particular number of markets.

import os
import requests

KEY = os.environ.get("PINNWIRE_KEY", "demo")
BASE = "https://pinnwire.com"

health = requests.get(
    BASE + "/v1/health",
    params={"key": KEY, "fresh": "python-free-guide"},
    timeout=10,
)
health.raise_for_status()
print("health:", health.json().get("status"))
print("feed age:", health.json().get("last_odds_update_seconds_ago"))

markets = requests.get(
    BASE + "/kit/v1/markets",
    params={"sport_id": 1, "key": KEY, "fresh": "python-markets"},
    timeout=10,
)
markets.raise_for_status()
payload = markets.json()
print("generated:", payload.get("generated_at"))
for event in payload.get("events", [])[:3]:
    print(event.get("id"), event.get("home"), event.get("away"))

Use PINNWIRE_KEY=demo for the first run. Set the environment variable to the key from your email when you want to test a private trial quota. The official Node.js SDK and Python SDK are available when you are ready to remove repetitive request plumbing.

Free Pinnacle odds API: common questions

Is there a free Pinnacle odds API I can test now?

Yes. PinnWire has a public demo key, literally key=demo, for immediate no-signup REST checks. It allows 10 requests per minute and 50 per day in one shared bucket. For a private quota, request an emailed trial key with 20 requests per minute and 100 per day.

What is the difference between the demo key and the trial key?

The demo key is shared across all demo callers and is capped at 10/min and 50/day total. A trial key is private to the email recipient and is capped at 20/min and 100/day. Both are REST-only. Treat them as separate access paths, not two names for the same quota.

Does the free PinnWire API include live and prematch odds?

Yes. The REST endpoints expose current live and prematch Pinnacle odds, with documented line depth and freshness metadata. You can test both paths before paying for a push transport.

Can I use SSE or the raw WebSocket on a free key?

No. SSE drop alerts require Stream, Pro+Drops or Scale. The raw WebSocket requires a paid plan plus the +$89/month add-on. A free key can poll the REST drops buffer and all ordinary REST endpoints.

How do I get a Pinnacle API trial key?

Enter your email in the trial form on the PinnWire homepage. The key is delivered by email and is not included in the signup response. No card is required to start the trial.

Is the free key unlimited or guaranteed for all production use?

No. The demo is a shared proof quota and the trial is capped private REST access. Neither promises unlimited free production traffic. When the project needs more volume, SSE or the raw WebSocket, PinnWire's paid plans make that boundary explicit with flat-rate pricing.

How can I check whether the odds response is fresh?

Read generated_at on every response and last_odds_update_seconds_ago on /v1/health. If your tool appears to cache a response, add a random fresh query parameter and fetch again. Do not present a cached response as live odds.

Best next step

Run one key=demo health call, one live market call and one prematch call. If the shape fits, request the private emailed trial and wire your own small test. PinnWire gives you the clearest path from “free Pinnacle odds API” search to a verified, production-ready integration.