24h volume — Markets — Kalshi — · Polymarket — Your connection checking…
Home › Open data

No key · JSON · every 2 minutes

Open data

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.

What is available

FileContentsUpdated
/datos/paises.jsonCountry accesswhenever a check changes (polled every 5 min)
/datos/pares.jsonThe same question on both platformsevery 2 minutes
/datos/mercados.jsonTop markets, liveevery 2 minutes
/mercados/rapida.jsonCatalogue of markets with a pageon each site build (catalogue, not prices)
/datos/fichas.jsonPrices of the markets with a pageevery 15 minutes
/datos/historial/{clave}.jsonPrice historyevery 15 minutes
/datos/aciertos.jsonDo the markets get it right?every hour
/datos/busquedas-semana.jsonWhat people search forevery 2 minutes (7-day window)

How to read them

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))

Country access

/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.

Fields

actualizadodate of the last review of the whole set (YYYY-MM-DD)
paises[].codigoISO country code
paises[].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 provider
paises[].autoridadwho issued or publishes the decision
paises[].verificadodate it was checked against the document
paises[].fichadetail page: /acceso-por-pais/{ficha}/ (Spanish)

Trimmed example, read on 18 September 2026

{"actualizado": "2026-09-11", "paises": [
  {"codigo": "ES", "nombre": "España",
   "kalshi": "Bloqueado", "polymarket": "Bloqueado",
   "autoridad": "Consumo / DGOJ", "verificado": "6 sep 2026", "ficha": "espana"}]}

The same question on both platforms

/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.

Fields

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 two
pares[].estado"confirmado" (same question) or "probable" (same question with a nuance, explained in the note)
pares[].nota · revisadowhat was checked, and when
descartados[]pairs that looked alike and are not, with the reason

Trimmed example, read on 18 September 2026

{"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": "…"}]}

Top markets, live

/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.

Fields

generadotime of the reading (UTC, ISO 8601)
resumentotals: active markets, volume, liquidity (Polymarket only) and how many close within 7 days
mercados[].plataforma · claveKalshi or Polymarket, and its identifier there
mercados[].q · q_origthe question in Spanish and in the original language
mercados[].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 change
degradadotrue if one of the platforms did not respond on this reading

Trimmed example, read on 18 September 2026

{"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, …]]}]}

Catalogue of markets with a page

/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.

Fields

m[].kmarket key (the same used in fichas.json and history files)
m[].pl · qplatform and question in Spanish
m[].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

Trimmed example, read on 18 September 2026

{"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]]}]}

Prices of the markets with a page

/datos/fichas.json ↗every 15 minutes

Current price of every option of the catalogued markets. Identifiers start with "k:" (Kalshi) or "p:" (Polymarket).

Fields

fichas{clave}.oprice of each option, in cents
fichas{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

Trimmed example, read on 18 September 2026

{"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"}}}

Price history

/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).

Fields

c · pmarket key and platform
h{AAAA-MM-DDTHH}price per option at that hour (UTC)
d{AAAA-MM-DD}.oprice per option at that day's close

Trimmed example, read on 18 September 2026

{"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}}, …}}

Do the markets get it right?

/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.

Fields

actualizado · desdelast run (UTC) and first close in the set
f[]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]

Trimmed example, read on 18 September 2026

{"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"]]}

What people search for

/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.

Fields

terminos{tema}.bsearches
terminos{tema}.ptimes someone asked us to compare that topic

Trimmed example, read on 18 September 2026

{"generado": "2026-09-18T09:14:04+00:00", "terminos": {
  "bitcoin": {"b": 16, "p": 2}, "petróleo": {"b": 9, "p": 4}}}

Terms

  • You may use this data, including commercially, crediting mercadosdeprediccion.io with a link.
  • Prices come from the public APIs of Kalshi and Polymarket and are subject to their terms. Translations, pairs and country verification are ours.
  • Provided as is, with no guarantee of availability or accuracy. If you find an error, tell us: it gets fixed and logged.
  • This is not financial advice.

Need another format, longer history or country data for a story? Write to huber@mercadosdeprediccion.io.

Markets —24h vol ——