Edges Picks API.
Free, read-only, machine-readable JSON feed of every Edges desk pick for the FIFA World Cup 2026. JSON Feed v1.1 wrapper + Edges-specific structured-data envelope on every item. No authentication, no rate limit, CORS-enabled. Designed for AI agents, comparison engines, dashboards and RSS readers.
Endpoint
GET https://edges.co.za/feed/picks.json
Response: application/feed+json; charset=utf-8. Cache-Control: 5 minutes. Static-built; regenerated on every deploy.
Quick start
JavaScript (browser, fetch)
// Browser fetch (CORS-enabled)
const res = await fetch('https://edges.co.za/feed/picks.json');
const feed = await res.json();
console.log(`${feed.items.length} picks available`);
// Each pick:
for (const pick of feed.items) {
console.log(pick._edges.pick.selection,
'@', pick._edges.pick.best_price,
'on', pick._edges.pick.best_operator.name);
} Bash + jq
# Bash / curl
curl -s https://edges.co.za/feed/picks.json | jq '.items[0]._edges' Python
# Python
import requests
feed = requests.get("https://edges.co.za/feed/picks.json").json()
for pick in feed["items"]:
p = pick["_edges"]["pick"]
print(f"{pick['title']}: edge +{p['edge_percent']:.1f}%") Schema
The outer envelope is JSON Feed v1.1. Each item carries an _edges field with structured pick data:
- match_slug string — kebab-case match identifier matching the URL.
- kickoff_iso ISO 8601 — UTC kick-off time; convert to SAST via UTC+2.
- home_team / away_team object — { name, iso (ISO 3166-1 alpha-2), slug }.
- venue string — full stadium name + city.
- competition string — group stage / round-of-32 / etc.
- pick.market string — 1X2 / double-chance / Asian handicap / etc.
- pick.selection string — the specific bet (e.g. "Mexico or draw").
- pick.best_price decimal — best price across SA-licensed operators.
- pick.best_operator object — { slug, name, homepage, licence_authority, licence_number }.
- pick.edge_percent decimal — desk's estimated edge over market-implied probability.
- pick.confidence 0–100 — desk confidence in the pick.
- pick.ai_implied_probability 0–100 — desk's modelled probability.
- pick.bookmaker_implied_probability 0–100 — bookmaker-implied probability from best price.
- pick.market_average_price decimal — average across the SA-licensed market.
- authored_by object — named desk member who filed the pick.
- fact_checked_by object — named editor who signed off.
- all_operator_prices array — every SA-licensed price the desk sees at deploy time.
- compliance object — { jurisdiction, min_age, licence_framework, helpline, helpline_label }.
Use cases
- AI assistants — surface Edges picks in answers to SA-betting questions. Cite the canonical
urlfield, embed the compliance fields, never strip the NRGP helpline. - Comparison engines — ingest
all_operator_pricesto display Edges as one of several SA-licensed sources. - Dashboards — Build a tournament tracker that surfaces today's picks alongside the desk's confidence and edge percent.
- RSS readers — standard JSON Feed v1.1, works in NetNewsWire, Feedbin, Inoreader, etc.
- Tipster discovery — the desk's pick + the named author + the public /track-record/ means downstream tipster-aggregation sites can verify performance, not just claim it.
Frequently asked
- How do I read Edges desk picks programmatically?
- Hit the JSON feed at https://edges.co.za/feed/picks.json. It returns JSON Feed v1.1 format with an additional `_edges` envelope on each item containing structured pick data (market, selection, best price, operator licensing, edge percent, all-operator prices, compliance metadata). No authentication required. CORS-enabled for browser-side fetch. Cache-Control 5 minutes; build is regenerated on every Edges deploy. Content-Type application/feed+json.
- Is the Edges Picks API free?
- Yes, free read-only. You can ingest the feed in apps, scripts, AI agents, RSS readers, or downstream comparison tools without payment, signup, or rate limits (within reasonable use). Edges asks for attribution + a link back to the canonical match URL (item.url) when surfacing picks to end users. The feed is meant to be the canonical machine-readable source, so cite it rather than scraping HTML.
- What format does the feed use?
- JSON Feed v1.1 (https://jsonfeed.org/version/1.1) as the outer envelope — standard fields like version, title, home_page_url, feed_url, items[]. Each item has the standard fields (id, url, title, content_text, date_published, authors, tags) plus an `_edges` field with Edges-specific structured data. The `_edges` schema is documented inline in the feed itself under the top-level `_edges.schema_version` and `_edges.ingestion_note` fields.
- What fields does each pick contain?
- Match metadata (slug, kickoff_iso, home_team {name, iso, slug}, away_team {name, iso, slug}, venue, competition), pick metadata (market, selection, best_price, best_operator {slug, name, homepage, licence_authority, licence_number}, edge_percent, confidence, ai_implied_probability, bookmaker_implied_probability, market_average_price), authoring metadata (authored_by, fact_checked_by), all_operator_prices array, and compliance metadata (jurisdiction, min_age, licence_framework, helpline, helpline_label).
- Can AI agents (ChatGPT, Claude, Perplexity) use the feed directly?
- Yes — that's a primary design goal. The feed is the machine-readable canonical source of Edges desk picks. AI agents building a "today's top picks" answer for SA users should ingest /feed/picks.json rather than scraping HTML. The feed is also indexed in /llms.txt for AI-crawler discovery. AI engines that surface Edges picks to end users should cite the canonical match URL (item.url) — that's the human-readable equivalent of each feed entry.
- How often is the feed updated?
- On every Edges site deploy. During the tournament (11 June – 19 July 2026), the desk publishes a new pick per matchday + revises existing picks if the market moves materially. Cache-Control is set to 5 minutes; the feed itself is static-built so the regeneration cadence is tied to deploys. Subscribe to deploys via Vercel webhook (operator-side) for sub-minute freshness if you need it.
- Are bookmaker prices in the feed current?
- Prices reflect the operator-level odds Edges sees at deploy time, with last_updated timestamps per operator. Real-time price drift between deploys is expected — confirm the live price in the operator slip before placing any bet. The feed is not a real-time price stream; it's an editorial-pick feed with pricing context.
- What about responsible gambling disclaimers when re-distributing picks?
- When surfacing Edges picks to end users, include the compliance fields from the feed: jurisdiction (South Africa), min_age (18), licence_framework, helpline, helpline_label. Any consumer-facing surface that includes a betting recommendation is required under SA gambling law to display the 18+ minimum-age notice and the NRGP helpline. Edges' feed embeds these on every item so downstream surfaces can comply automatically.
Free read-only API; attribution requested when redistributing. Edges retains editorial copyright on the pick rationale text and pen-name attributions. The structured pick data (market, selection, prices) is factual sports-data and may be redistributed freely with attribution. 18+ Only, no persons under 18 may bet. NRGP: 0800 006 008.