Polymarket Prediction Markets & Odds Scraper avatar

Polymarket Prediction Markets & Odds Scraper

Pricing

from $9.60 / 1,000 results

Go to Apify Store
Polymarket Prediction Markets & Odds Scraper

Polymarket Prediction Markets & Odds Scraper

Scrape Polymarket prediction markets with live outcome odds, trading volume, liquidity, order book best bid and ask, price changes and resolution details. Filter by status, category or keyword. Export to JSON, CSV or Excel.

Pricing

from $9.60 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Share

Polymarket Prediction Markets & Odds Scraper

Polymarket Prediction Markets & Odds Scraper

Here is one real result, with every field the actor returns (long description trimmed for readability; the actor returns the full text):

{
"id": "2063134",
"question": "Will Adanech Abiebie be the next Prime Minister of Ethiopia?",
"slug": "will-adanech-abiebie-be-the-next-prime-minister-of-ethiopia",
"url": "https://polymarket.com/event/next-prime-minister-of-ethiopia",
"category": "Next Prime Minister of Ethiopia?",
"eventSlug": "next-prime-minister-of-ethiopia",
"image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-adanech-abiebie-be-the-next-prime-minister-of-ethiopia-7nUlSNmvB5IN.png",
"icon": "https://polymarket-upload.s3.us-east-2.amazonaws.com/will-adanech-abiebie-be-the-next-prime-minister-of-ethiopia-7nUlSNmvB5IN.png",
"outcomes": [
{ "name": "Yes", "price": 0.004 },
{ "name": "No", "price": 0.996 }
],
"volume": 76722451.09993298,
"volume24hr": 678363.666,
"volume1wk": 3758336.070359,
"volume1mo": 38627759.277858,
"volume1yr": 76722401.099933,
"liquidity": 18399.85922,
"openInterest": 33095.619180999995,
"bestBid": 0.003,
"bestAsk": 0.005,
"spread": 0.002,
"lastTradePrice": 0.003,
"oneDayPriceChange": 0.001,
"oneWeekPriceChange": 0.002,
"oneMonthPriceChange": 0.0015,
"competitive": 0.8025579125789717,
"commentCount": 46,
"active": true,
"closed": false,
"acceptingOrders": true,
"featured": false,
"isNew": false,
"restricted": true,
"enableOrderBook": true,
"negRisk": true,
"orderMinSize": 5,
"orderPriceMinTickSize": 0.001,
"umaBond": 500,
"umaReward": 5,
"createdAt": "2026-04-23T22:32:51.276002Z",
"startDate": "2026-04-27",
"endDate": "2026-06-01",
"resolutionSource": null,
"resolvedBy": "0x69c47De9D4D3Dad79590d61b9e05918E03775f24",
"eventId": "411239",
"eventTicker": "next-prime-minister-of-ethiopia",
"eventTitle": "Next Prime Minister of Ethiopia?",
"conditionId": "0x7d0aaf81bbd3fd73b6a1651cce08a452c0cbf9c0cbb4520ce0f981065b639d88",
"clobTokenIds": [
"27146956652877944551877724690365745048289675287536243265951843487691050802191",
"33216695217861742195941369663873573949679634432452142092545486849801915283392"
],
"description": "General elections are scheduled to be held in Ethiopia on June 1, 2026. This market will resolve to the next individual who officially assumes the office [trimmed]",
"updatedAt": "2026-08-10T14:15:59.743528Z",
"source": "Polymarket",
"observedAt": "2026-08-10T14:17:49.964Z"
}

The most complete Polymarket scraper available. It returns every field a Polymarket market exposes, including the outcome prices (odds), full volume history, liquidity, open interest, order book bids and asks, price changes, UMA resolution details and CLOB token ids, and gives you status, sort, keyword and category filters to target exactly the markets you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor collects Polymarket prediction markets, applies the status, sort, keyword and category filters you pass, and writes one normalized record per market to the run's dataset. Each record includes the current outcome prices (the odds), the full volume breakdown (24 hours, week, month, year and total), liquidity, open interest, best bid and ask with spread, recent price changes, the market lifecycle dates, the on-chain condition id and CLOB token ids, and the UMA resolution parameters. Missing source values are returned as null, never invented.

Filter by status (active, closed, all), order by sortBy (volume, liquidity, newest, ending soon), and narrow with a searchQuery keyword or a category tagSlug.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 active markets with the highest trading volume.

{
"maxMarkets": 10,
"status": "active",
"sortBy": "volume"
}

Add a searchQuery (for example bitcoin) or a tagSlug (for example politics) to narrow the results.

Input reference

FieldTypeRequiredDefaultDescription
maxMarketsintegerno10Maximum number of markets to collect.
statusenumnoactiveWhich markets to return: active (open for trading), closed (resolved), or all.
sortByenumnovolumeOrder the markets by volume, liquidity, newest, or endingSoon.
searchQuerystringno(empty)Keep only markets whose question or category contains this text, for example election, bitcoin, world cup.
tagSlugstringno(empty)Restrict to one Polymarket category by its tag slug, for example sports, politics, crypto.

Filters combine with logical AND.

Output reference

One dataset item per market. Types: string, number, integer, boolean, object[], string[], or null when the source value is absent.

FieldTypeDescription
idstringMarket id (unique).
questionstringThe market question.
slugstringMarket slug.
urlstringMarket URL on Polymarket.
categorystringCategory or event title.
eventSlugstringSlug of the parent event.
imagestringMarket image URL.
iconstringMarket icon URL.
outcomesobject[]Outcomes with name and price (the odds, 0 to 1).
volumenumberTotal traded volume.
volume24hrnumberVolume in the last 24 hours.
volume1wknumberVolume in the last week.
volume1monumberVolume in the last month.
volume1yrnumberVolume in the last year.
liquiditynumberCurrent liquidity.
openInterestnumberOpen interest.
bestBidnumberBest bid price.
bestAsknumberBest ask price.
spreadnumberBid/ask spread.
lastTradePricenumberPrice of the last trade.
oneDayPriceChangenumberPrice change over one day.
oneWeekPriceChangenumberPrice change over one week.
oneMonthPriceChangenumberPrice change over one month.
competitivenumberPolymarket competitiveness score.
commentCountintegerNumber of comments.
activebooleantrue when the market is active.
closedbooleantrue when the market is resolved.
acceptingOrdersbooleantrue when the market accepts orders.
featuredbooleantrue when featured.
isNewbooleantrue when flagged as new.
restrictedbooleantrue when trading is geo-restricted.
enableOrderBookbooleantrue when the order book is enabled.
negRiskbooleantrue when part of a negative-risk market group.
orderMinSizenumberMinimum order size.
orderPriceMinTickSizenumberMinimum price tick.
umaBondnumberUMA dispute bond.
umaRewardnumberUMA resolution reward.
createdAtstringMarket creation timestamp (ISO 8601).
startDatestringMarket start date.
endDatestringMarket end date.
resolutionSourcestringNamed resolution source, or null.
resolvedBystringResolver address.
eventIdstringParent event id.
eventTickerstringParent event ticker.
eventTitlestringParent event title.
conditionIdstringOn-chain condition id.
clobTokenIdsstring[]CLOB token ids for the outcomes.
descriptionstringFull market description and resolution criteria.
updatedAtstringLast update timestamp (ISO 8601).
sourcestringAlways Polymarket.
observedAtstringISO 8601 timestamp of when the record was collected.

Example output record

Real record from a live run (input {"status": "active", "sortBy": "volume", "maxMarkets": 10}):

{
"id": "703258",
"question": "Will Jesus Christ return before 2027?",
"slug": "will-jesus-christ-return-before-2027",
"url": "https://polymarket.com/event/will-jesus-christ-return-before-2027",
"category": "Will Jesus Christ return before 2027?",
"eventSlug": "will-jesus-christ-return-before-2027",
"outcomes": [
{ "name": "Yes", "price": 0.0195 },
{ "name": "No", "price": 0.9805 }
],
"volume": 64984006.03862794,
"volume24hr": 11954.810526000001,
"liquidity": 801916.29596,
"bestBid": 0.019,
"bestAsk": 0.02,
"spread": 0.001,
"lastTradePrice": 0.02,
"commentCount": 1,
"active": true,
"closed": false,
"startDate": "2025-11-25",
"endDate": "2026-12-31",
"eventId": "90178",
"conditionId": "0x0b4cc3b739e1dfe5d73274740e7308b6fb389c5af040c3a174923d928d134bee",
"source": "Polymarket",
"observedAt": "2026-08-10T14:17:49.964Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~polymarket-markets-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"status":"active","sortBy":"volume","maxMarkets":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~polymarket-markets-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"bitcoin","status":"all","maxMarkets":100}'

Apify CLI:

apify call scrapers_lat/polymarket-markets-scraper \
--input '{"tagSlug":"politics","sortBy":"endingSoon"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per market returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor does not charge for failed work. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 markets per run. Upgrade for higher maxMarkets.

FAQ and troubleshooting

A run returned 0 records. Why? The keyword or tag slug matched nothing, or a closed-only filter with no matching markets. Loosen searchQuery, clear tagSlug, or set status to all. Zero-result runs are not charged.

What do the outcome prices mean? Each outcomes price is the market-implied probability of that outcome, from 0 to 1. A Yes price of 0.02 means the market prices that outcome at about 2 percent.

How do I get resolved markets? Set status to closed (only resolved markets) or all (both open and resolved).

Can I focus on one topic? Yes. Use searchQuery for a keyword across question and category, or tagSlug to restrict to one Polymarket category such as sports or crypto.

Why is resolutionSource null? Many markets resolve via UMA rather than a named source, so the field is null. The resolvedBy address and UMA parameters are still returned. Missing source values are returned as null, never invented.

Is this an official Polymarket tool? No. This actor is independent and has no affiliation with Polymarket. It reads only data that is publicly available on Polymarket.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Polymarket. Accesses only publicly available market data.