Poll Pinnacle price drops in Node.js
Answer: GET /v1/drops returns recent Pinnacle steam moves. Query params from the OpenAPI: sport, minutes (1–60, default 15), min_pct / minPct (default 3), limit (max 200), plus the usual market filters.
30-second poller (Node 18+)#
const KEY = process.env.PINNFEED_KEY;
const params = new URLSearchParams({
sport: "soccer",
minutes: "15",
min_pct: "4",
limit: "50",
main: "true",
});
async function poll() {
const r = await fetch(`https://pinnfeed.io/v1/drops?${params}`, {
headers: { "x-api-key": KEY, accept: "application/json" },
});
if (!r.ok) throw new Error(`${r.status} ${await r.text()}`);
const body = await r.json();
const drops = body.drops || body || [];
for (const d of drops) {
console.log(d.eventId || d.event?.id, d.market?.type, d.pct ?? d.minPct, d);
}
}
setInterval(() => poll().catch(console.error), 30_000);
poll();
Free covers drops (delayed). For sub-second steam, subscribe on the WebSocket instead — Builder (€99/mo) and the steam guide. Paid plans: 3-day trial; a card is required and it is charged after day 3 unless you cancel. Educational content for adults (18+).
Related: dropping odds alerts via the API.
Questions people ask#
What does min_pct measure?#
Minimum percentage price drop in the window. Values are clamped roughly 0.5–90 per the OpenAPI description.
Can I filter by league?#
Yes — pass league / leagues (ids) the same way as /v1/odds.