No key · JSON · every 2 minutes
The same files this site reads, open to anyone: live Kalshi and Polymarket prices, verified cross-platform pairs, and country-by-country access with its source document. No sign-up, no key.
| File | Contents | Updated |
|---|---|---|
/datos/paises.json | Country access | whenever a check changes (polled every 5 min) |
/datos/pares.json | The same question on both platforms | every 2 minutes |
/datos/mercados.json | Top markets, live | every 2 minutes |
/mercados/rapida.json | Catalogue of markets with a page | on each site build (catalogue, not prices) |
/datos/fichas.json | Prices of the markets with a page | every 15 minutes |
/datos/historial/{clave}.json | Price history | every 15 minutes |
/datos/aciertos.json | Do the markets get it right? | every hour |
/datos/busquedas-semana.json | What people search for | every 2 minutes (7-day window) |
They are plain JSON files: fetch them with a GET request, from any domain. There is no authentication and no formal rate limit, but please do not poll more than once a minute: they live on a small server. Market text is in Spanish.
curl https://mercadosdeprediccion.io/datos/pares.json
fetch("https://mercadosdeprediccion.io/datos/paises.json")
.then(r => r.json())
.then(d => console.log(d.paises))/datos/paises.json ↗whenever a check changes (polled every 5 min)
What exists nowhere else: for each country, what is on record about Kalshi and Polymarket, which authority decides it, and the date we checked it against the official document.
actualizadodate of the last review of the whole set (YYYY-MM-DD)paises[].codigoISO country codepaises[].kalshi · paises[].polymarketstatus of each platform. "Bloqueado" means a blocking order is on record, not that the site fails to load on a given connection: that depends on each internet providerpaises[].autoridadwho issued or publishes the decisionpaises[].verificadodate it was checked against the documentpaises[].fichadetail page: /acceso-por-pais/{ficha}/ (Spanish){"actualizado": "2026-09-11", "paises": [
{"codigo": "ES", "nombre": "España",
"kalshi": "Bloqueado", "polymarket": "Bloqueado",
"autoridad": "Consumo / DGOJ", "verificado": "6 sep 2026", "ficha": "espana"}]}/datos/pares.json ↗every 2 minutes
Markets that exist on both Kalshi and Polymarket, with each price and the gap. Every pair was reviewed by reading both rulebooks: the note explains where they match and where they do not.
A price gap between platforms is not an arbitrage opportunity: rules, fees and country access differ.
pares[].titulo · resultadothe question and the option being compared (Spanish)pares[].kalshi.pct · poly.pctprice of that option on each platform, in cents (= %)pares[].difgap in points between the twopares[].estado"confirmado" (same question) or "probable" (same question with a nuance, explained in the note)pares[].nota · revisadowhat was checked, and whendescartados[]pairs that looked alike and are not, with the reason{"pares": [{"titulo": "¿Entrará María Corina Machado en Venezuela antes de 2027?",
"resultado": "Antes de 2027", "estado": "probable", "dif": 17,
"kalshi": {"pct": 40, "ticker": "KXMACHADOVENEZUELA-26JUN29", "url": "…"},
"poly": {"pct": 57, "slug": "will-mara-corina-machado-enter-venezuela-by-january-31", "url": "…"},
"nota": "Las dos exigen que pise territorio venezolano…", "revisado": "…"}]}/datos/mercados.json ↗every 2 minutes
The most active markets on both platforms, with the question translated into Spanish, volume, liquidity and close date. It is what the homepage shows.
generadotime of the reading (UTC, ISO 8601)resumentotals: active markets, volume, liquidity (Polymarket only) and how many close within 7 daysmercados[].plataforma · claveKalshi or Polymarket, and its identifier theremercados[].q · q_origthe question in Spanish and in the original languagemercados[].vol24 · liq_num24h volume and liquidity, in dollars (number). Kalshi does not publish liquidity: on its markets it is 0, meaning «no data»mercados[].c_isoclose date (UTC)mercados[].ooptions: 1st element is the name and 3rd the price in cents; the rest is presentational and may changedegradadotrue if one of the platforms did not respond on this reading{"generado": "2026-09-18T09:14:02+00:00", "mercados": [
{"plataforma": "Polymarket", "q": "¿Qué hará la Fed en la reunión de octubre?",
"q_orig": "Fed Decision in October?", "vol24": 1716893.99, "liq_num": 2127244.46,
"c_iso": "2026-10-28T23:59:00Z",
"o": [["Subir 25 pb", "52¢", 52, …], ["Sin cambios", "48¢", 48, …]]}]}/mercados/rapida.json ↗on each site build (catalogue, not prices)
Every market that has its own page on the site, with the Spanish name of each option and its identifier. Use it to decode the identifiers in fichas.json and in the history files.
m[].kmarket key (the same used in fichas.json and history files)m[].pl · qplatform and question in Spanishm[].sits page: /mercados/{s}/m[].ciclose date (YYYY-MM-DD)m[].ooptions: [identifier, Spanish name, price at build time]. That price goes stale: the live one is in fichas.json{"n": 115, "m": [{"k": "clarity-act-signed-into-law-in-2026", "pl": "Polymarket",
"s": "se-aprobara-la-clarity-act-como-ley-en-2026",
"q": "¿Se aprobará la Clarity Act como ley en 2026?", "ci": "2027-01-01",
"o": [["p:Yes", "Sí", 18], ["p:No", "No", 82]]}]}/datos/fichas.json ↗every 15 minutes
Current price of every option of the catalogued markets. Identifiers start with "k:" (Kalshi) or "p:" (Polymarket).
fichas{clave}.oprice of each option, in centsfichas{clave}.vn · liqvolume and liquidity in dollars (number); 0 in liq means «no data» (Kalshi does not publish it)fichas{clave}.ttime of the reading (UTC)fichas{clave}.rrules fingerprint: if it changes, the platform changed the market's resolution text{"fichas": {"alexandre-de-moraes-out-as-brazil-supreme-court-justice": {
"o": {"p:Yes": 16, "p:No": 84}, "vn": 795955.01, "liq": 0,
"r": "5587d0ec6b98", "t": "2026-09-18T09:15:01Z"}}}/datos/historial/{clave}.jsonevery 15 minutes
One reading per hour for the last 48 hours, and the close of every day since we started storing it (14 Sep 2026 for the first markets).
c · pmarket key and platformh{AAAA-MM-DDTHH}price per option at that hour (UTC)d{AAAA-MM-DD}.oprice per option at that day's close{"c": "CONTROLH-2026", "p": "Kalshi",
"h": {"2026-09-16T10": {"k:CONTROLH-2026-D": 86, "k:CONTROLH-2026-R": 14}, …},
"d": {"2026-08-16": {"o": {"k:CONTROLH-2026-D": 86, "k:CONTROLH-2026-R": 15}}, …}}/datos/aciertos.json ↗every hour
Every resolved option of the markets we track, with its price 1, 7 and 30 days before the close and the official outcome. It powers the page "Do Polymarket and Kalshi get it right?". Options without our own price are left out.
actualizado · desdelast run (UTC) and first close in the setf[]one row: [platform K/P, question, option, topic, won 1/0, close day, price 1 day before, 7 days, 30 days (null if missing), market key]{"actualizado": "2026-11-04T19:07:02Z", "desde": "2026-09-16", "f": [
["K", "¿Qué partido controlará la Cámara?", "Demócrata", "Política", 1, "2026-11-04", 94, 93, 91, "CONTROLH-2026"]]}/datos/busquedas-semana.json ↗every 2 minutes (7-day window)
The topics most searched on the site over the last seven days. Only those with three or more appear: one-off searches are never published.
terminos{tema}.bsearchesterminos{tema}.ptimes someone asked us to compare that topic{"generado": "2026-09-18T09:14:04+00:00", "terminos": {
"bitcoin": {"b": 16, "p": 2}, "petróleo": {"b": 9, "p": 4}}}Need another format, longer history or country data for a story? Write to huber@mercadosdeprediccion.io.