Today's cardsUK · Ireland · United States · AustraliaForm data as JSON
For tipsters and small syndicates

The morning racecards, already in your model.

Declarations, draw, weights, form figures, results and going as clean JSON. One API across UK and Irish cards, US entries and Australian fields, priced for a two-person operation and not for a bookmaker's trading floor.

No more pasting cards into a spreadsheet before the first. No scraper to nurse through Festival week. Read-only data, called when you need it.

3.35 Hartlebury Park--:--:--
Class 3 Handicap7f 14y8 declared Going: Good
No (dr)Horse / JockeyAge-WgtFormYour rtg
Simulated card for illustration. Course, horses, jockeys and trainers are invented. The rating column stands in for your own model re-running as fresh data is fetched.
22endpoints: racecards, results, profiles, draw stats, tips pages
6sources behind one call shape and one API key
4racing nations: UK, Ireland, United States, Australia
0scrapers, proxies or headless browsers for you to run
You know these three moments

You wanted to rate horses. You ended up running a data desk.

06:40 / SIX MEETINGS TODAY

Copy, paste, fix the columns, repeat

Every morning the same ritual: open each card, select the table, paste into the sheet, repair the merged cells, re-key the headgear. First race is at 12:50 and you have not looked at a single horse.

meeting 1 of 6 ... pasted
meeting 2 of 6 ... pasted
meeting 3 of 6 ... #REF! in col H
time spent on form study: 0 min
13:52 / GOING CHANGED AT 11:40

Your ratings are for a race that no longer exists

Rain came, the ground eased, two came out. Your sheet still says Good and still has eight runners. The selections went to subscribers an hour ago on stale numbers.

sheet: going = Good, 8 runners
course: Good to Soft, 6 runners
draw bias assumption: wrong
each-way terms: changed
FESTIVAL TUESDAY / 10:15

The scraper breaks on the one week that pays

It ran fine all winter. Then Cheltenham or Royal Ascot week arrives, the site ships a new layout and a bot check, and your cron job returns nothing for the biggest cards of the year.

10:15:02 GET /racecards 200
10:15:09 WARN runner table not found
10:15:21 ERR 403 challenge page
10:15:21 ERR 0 runners parsed

And the official route?
Data licences are structured and priced for bookmakers and media groups. If you are two people with a ratings model and a subscriber list, you are not who they were written for.

See small-team pricing
Coverage

Twenty-two endpoints. Six sources. One way to call them.

UK and Irish cards and results, US entries and figures, Australian fields, plus the draw statistics and public tips pages you already check by hand. US and Australian racing live on entirely different sites. Here they share one request format.

Counts are endpoints available today. Each endpoint returns what its source publishes at the moment you call it. Formfeed is not affiliated with any of the sources listed.

How it works

One POST. A racecard back as JSON.

1

Pick an endpoint. Today's racecards, results by date, a horse profile, a US track's entries, draw statistics. Each one is a hosted function with a stable ID.

2

Call it with your variables. A date, a race, a horse, a track. We open the source in a real browser on our side and read the page the way you would.

3

Get structured JSON. Runners, draw, weights, form figures, going, finishing positions. Load it straight into pandas, your database or the sheet you already trust.

4

When a source changes its site, we repair the endpoint. Same ID, same call. Your code does not move.

It is a request API: data is read at call time. Call again before the off to pick up non-runners and going changes. It is not a push stream.


  
Working tool

Bet maths, the way the card prints it.

An each-way returns calculator and a dutching stake splitter. Type fractional or decimal odds. Both are plain arithmetic that runs in your browser, the sort of thing you would otherwise rebuild in a spreadsheet cell.

The sums are the easy part. Having the right runners, the right place terms and the right going in front of you is the hard part. That part is the API.

Arithmetic only. Not betting advice and not a prediction of any result. Rule 4 deductions and dead heats are not modelled.

From the people it was built for

Small operations that got their mornings back.

Individual experiences. Nothing here is a claim about betting results.

Pricing

Priced for a tipster's margin, not a bookmaker's.

Maiden
£0
Check the data against your own sheet first.
  • 500 calls a month
  • All 22 endpoints
  • No card needed
  • Community support
Get a key
Handicapper / most picked
£69 /month
For a service that publishes every racing day.
  • 25,000 calls a month
  • All 22 endpoints
  • Notice by email when an endpoint is repaired
  • Email support
Start 14-day trial
Syndicate
Custom
Need a source or a field we do not have?
  • Volume pricing
  • New endpoints built on request
  • Private endpoints for your group
  • Direct line to the team
Talk to us
FAQ

What a careful modeler asks first.

How fresh is the data?

Each call reads the source at request time, so you get what that page shows at that moment. Call the racecard again before the off and you pick up non-runners and going changes as the source has them. It is a request API, not a push stream, and it is not built for in-running use.

Is this an official racing data licence?

No. Formfeed is not an official data supplier and is not affiliated with any racing authority or with the sources it reads. Each endpoint returns publicly visible page content as structured JSON. You are responsible for how you use the data, including any terms that apply to you and to what you republish.

What happens when a source changes its site?

The endpoint is repaired on our side and keeps the same ID and the same way of calling it, so the fix does not land on your desk in the middle of a big meeting. Response fields follow what the source publishes, so a field can appear or disappear when the source changes what it shows.

Do the tips endpoints mean you are giving tips?

No. The gg.co.uk and myracing endpoints return the selections those sites publish, as data, for people who track or compare public tips. Formfeed has no view on any horse and nothing here is betting advice.

Does it cover US and Australian racing in the same format?

The call shape is the same for every endpoint. Equibase endpoints cover US entries, results and statistics. Australian fields come through the Racing Post endpoints. Field names follow each source, so expect to map them once into your own schema.

Can you add a source or a field I need?

Yes, on the Syndicate plan. Describe the page and the fields and we build the endpoint.

Who runs this?

Formfeed runs on Notte's browser infrastructure. Each endpoint is a hosted Notte function, which is why the request goes to api.notte.cc.

Tomorrow's cards, without tomorrow's copy and paste.

Pull your first racecard as JSON this afternoon and spend the morning on the form instead.