Horse Racing Pulse
Pricing
from $1.40 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
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:
| Signal | Meaning |
|---|---|
steamer | A horse's implied probability jumped between runs — money coming in fast, price shortening |
drifter | A horse's implied probability faded between runs — confidence draining, price lengthening |
- Pattern (opt-in via
include_form_history) — a named, hidden form signal:
| Pattern | Meaning |
|---|---|
debutant | Horse's first-ever race — no form to go on |
winless_streak | 10+ career starts, still 0 wins |
jockey_change | Jockey/driver changed for this race |
earnings_swing | This 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)
| Field | Default | Description |
|---|---|---|
max_races | 20 | How many soonest-starting active races to scan per run |
movement_threshold_pct | 5 | Minimum implied-probability change (percentage points) between runs to fire a signal |
only_signals | false | Skip snapshots, only push steamer/drifter/pattern rows |
include_form_history | false | New. 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_pctfor more sensitivity (more signals, more noise) or raise it to only catch big moves. - Races close to post time move fastest —
max_racesis 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.