Horse Racing Pulse avatar

Horse Racing Pulse

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Horse Racing Pulse

Horse Racing Pulse

Tracks live PMU (France) horse-racing odds for races still open to betting, and flags implied-probability steamers and drifters between runs.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

0xGollum

0xGollum

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 days ago

Last modified

Share

Horse Racing Pulse 🐎

A shortening price is one of the oldest tells in racing. Catch it before the off.

Pari-mutuel odds aren't fixed by a bookmaker — they float with the betting pool right up to post time. When real money (often smart money) lands on a horse, its price shortens fast. This actor watches that movement across every PMU race still open for betting, continuously.

🆕 New: hidden form patterns (opt-in)

Odds movement tells you where the money is going right now. A horse's history tells you things a human would need to cross-reference by hand to notice — a jockey switch on the day, a horse still winless after a double-digit number of starts, earnings swinging sharply year over year. Turn on include_form_history and the actor now flags these automatically, alongside the odds signals. Off by default — nothing changes for existing users unless you opt in.

What you get

Three row types:

  • Snapshot — current odds + implied probability for every horse in every tracked race
  • Signal — a named, fired condition on odds movement:
SignalMeaning
steamerA horse's implied probability jumped between runs — money coming in fast, price shortening
drifterA horse's implied probability faded between runs — confidence draining, price lengthening
  • Pattern (opt-in via include_form_history) — a named, hidden form signal:
PatternMeaning
debutantHorse's first-ever race — no form to go on
winless_streak10+ career starts, still 0 wins
jockey_changeJockey/driver changed for this race
earnings_swingThis year's earnings vs last year's swung 50%+ in either direction

Sources (public, no API key, no proxy)

PMU (Pari Mutuel Urbain) — France's official pari-mutuel operator, exposes a fully public, key-less JSON API used by its own web and app clients. Covers French tracks (flat, trot, jump) plus a handful of foreign tracks PMU takes bets on. No account, no login, no proxy needed.

Only races still open for betting are scanned (PROGRAMMEE, ROUGE_AUX_PARTANTS, DEPART_DANS_TROIS_MINUTES status) — finished races are skipped automatically, so every run's actionable.

Use cases

  • Punters — spot steamers before the crowd, avoid drifters
  • Value bettors — price movement is a core tell for market confidence shifts
  • Content & tipster sites — power previews with live movement data
  • Bots & automations — feed clean signals into your own alerting pipeline

Input (all optional)

FieldDefaultDescription
max_races20How many soonest-starting active races to scan per run
movement_threshold_pct5Minimum implied-probability change (percentage points) between runs to fire a signal
only_signalsfalseSkip snapshots, only push steamer/drifter/pattern rows
include_form_historyfalseNew. Also flag hidden form patterns per horse (see above)

Output

{
"type": "signal",
"signal": "steamer",
"hippodrome": "CHANTILLY",
"num_reunion": 1,
"num_course": 8,
"race_name": "LE ROI SOLEIL",
"horse_num": 4,
"horse_name": "INGEBORG",
"prob_change_pct": 6.8,
"current_cote": 5.2,
"current_prob_pct": 19.2,
"previous_prob_pct": 12.4,
"message": "INGEBORG (#4) at CHANTILLY R1C8: odds shortened to 5.2 (12.4% -> 19.2% implied) — money coming in fast."
}

With include_form_history: true, you also get rows like:

{
"type": "pattern",
"pattern": "earnings_swing",
"hippodrome": "VINCENNES",
"num_reunion": 1,
"num_course": 3,
"race_name": "PRIX D'AUTOMNE",
"horse_num": 5,
"horse_name": "MAIS OUI MADRIK",
"direction": "up",
"swing_pct": 5568.0,
"message": "MAIS OUI MADRIK (#5): earnings up 5568% vs last year (€510 -> €28905)."
}

Pricing

Pay per result: $0.002 per row (snapshots + signals + patterns).

Tips

  • Schedule it every 10–15 min during racing hours to catch steam as it builds toward post time; movement between two runs is what triggers a signal, so it needs a persistent schedule (not one-off runs) to be useful.
  • Lower movement_threshold_pct for more sensitivity (more signals, more noise) or raise it to only catch big moves.
  • Races close to post time move fastest — max_races is sorted soonest-first by default.

⚠️ Not betting advice. Odds movement reflects market activity, not a guaranteed outcome. This actor surfaces public odds data — it does not place bets or guarantee profit.