Opinion Labs Prediction Markets Scraper
Pricing
Pay per event
Opinion Labs Prediction Markets Scraper
๐ Export public Opinion prediction markets with live probabilities, buy/sell prices, volume, liquidity, rules, categories, timing, and stable IDs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Export public prediction markets from Opinion as clean, analysis-ready records.
Get live YES and NO probabilities, buy and sell prices, total and recent volume, liquidity, categories, rules, resolution sources, timing, and stable market IDs without a wallet or Opinion API key.
Use the Actor once for a catalog export or run it on a schedule to build an odds and volume time series.
What does Opinion Labs Prediction Markets Scraper do?
The Actor reads Opinion's anonymous public market catalog and creates one normalized dataset row for each visible binary or categorical child market.
It can:
- ๐ extract current YES and NO probabilities;
- ๐ฑ preserve separate buy, sell, and last market prices;
- ๐ collect total, 24-hour, and 7-day trading volume;
- ๐งญ filter markets by text, category, status, and minimum volume;
- ๐งพ save market rules and the primary resolution source;
- ๐ retain question, topic, condition, and source identifiers;
- โฑ๏ธ add an observation timestamp for scheduled snapshots.
The result is ready for JSON, CSV, Excel, XML, API delivery, or downstream automation.
Who is it for?
Prediction-market traders
Screen Opinion markets by theme or volume before deeper trading research.
Quant and research teams
Feed structured probability snapshots into notebooks, databases, alerting systems, and forecasting models.
Journalists and media dashboards
Track how market expectations change around elections, economics, crypto, sports, and culture.
Forecasters
Compare crowd probabilities with internal forecasts and preserve rules that define what each market means.
AI agents
Give an agent stable structured records instead of asking it to interpret a changing website layout.
Why use this Opinion scraper?
Opinion's public application is useful for people, but repeated analysis needs consistent fields and machine-readable exports.
This Actor provides:
- a repeatable input contract;
- normalized numeric probability and volume values;
- stable IDs for deduplication;
- filtering before records are saved;
- scheduled execution on the Apify platform;
- integrations with datasets, webhooks, cloud storage, and APIs.
No login, wallet connection, trade authorization, or private OpenAPI credential is required for this public catalog scope.
What data can you extract?
| Field | Meaning |
|---|---|
title | Full market question or outcome title |
titleShort | Short title supplied by Opinion |
slug | Stable URL slug |
questionId | Opinion question identifier |
topicId | Parent topic identifier |
conditionId | Condition identifier when exposed |
categories | Opinion category and topic labels |
status | Normalized active, upcoming, resolved, or unknown |
createdAt | Market creation time |
cutoffAt | Trading or resolution cutoff time |
resolvedAt | Resolution time when available |
rules | Market resolution rules |
resolutionSource | Primary source URL found in the rules |
yesBuyProbability | Current YES buy price/probability |
yesSellProbability | Current YES sell price/probability |
yesLastProbability | Last/market YES probability |
noBuyProbability | Current NO buy price/probability |
noSellProbability | Current NO sell price/probability |
noLastProbability | Last/market NO probability |
volume | Total reported trading volume |
volume24h | Reported volume over 24 hours |
volume7d | Reported volume over seven days |
liquidity | Reported liquidity capacity |
sourceUrl | Direct Opinion market link |
scrapedAt | UTC observation timestamp |
Missing source values are omitted rather than invented or converted to zero.
How to scrape Opinion prediction markets
- Open the Actor input page.
- Enter an optional text query such as
FedorBitcoin. - Add exact categories if you need a narrower feed.
- Choose a market status.
- Set a minimum volume and maximum result count.
- Click Start.
- Download the dataset or connect it to your workflow.
A first test with 20 records normally finishes well under two minutes.
Input options
Search market text
searchQuery performs a case-insensitive substring match against titles and rules.
Use Fed to find federal-funds questions or MLB for baseball-related rules and titles.
Categories
categories accepts exact Opinion labels such as Macro, Crypto, Sports, or Culture.
Category matching is case-insensitive. A market passes when one of its labels matches one requested value.
Market status
status supports:
allโ every catalog record;activeโ currently active markets;upcomingโ markets not yet active;resolvedโ markets with a completed resolution.
Minimum volume
minVolume screens out records below the requested total volume.
Maximum markets
maxItems limits saved records from 1 to 1,000.
Input examples
Browse active markets
{"status": "active","maxItems": 50}
Find macro markets
{"categories": ["Macro"],"status": "all","maxItems": 100}
Monitor liquid markets
{"status": "active","minVolume": 10000,"maxItems": 250}
Output example
{"title": "Fed rate hike in 2026?","titleShort": "Fed rate hike","slug": "fed-rate-hike-in-2026","questionId": "cbc0cedabddc63f8a562388e1859c6011cbfaa93d2fb366a283373bc5796268a","topicId": "17360","categories": ["Macro"],"status": "active","yesLabel": "YES","noLabel": "NO","yesBuyProbability": 0.63,"yesSellProbability": 0.57,"yesLastProbability": 0.531,"volume": 75704.0785,"volume24h": 58.3835,"volume7d": 58.3835,"sourceUrl": "https://app.opinion.trade/market/fed-rate-hike-in-2026","scrapedAt": "2026-07-22T00:00:00.000Z"}
Values change as Opinion's public market data changes. The example illustrates field shape, not a guaranteed current quote.
How much does it cost to scrape Opinion markets?
This Actor uses pay-per-event pricing.
A run has a small start charge and then charges per market record saved. The current BRONZE per-market rate is $0.000087467, with lower unit prices on higher Apify plans and a $0.005 start event.
You are not charged an item event for records that do not pass your filters.
The Apify Console displays the exact estimate before a run. Use a low maxItems value for a cheap first test.
Scheduled odds and volume monitoring
To build a time series:
- create an Apify schedule for the Actor;
- choose a stable filter, such as active Macro markets;
- run hourly or daily;
- append dataset records to your database or warehouse;
- group observations by
questionIdand sort byscrapedAt.
This captures changing probabilities without claiming that the Actor itself provides historical candles.
Integrations
Google Sheets and Excel
Download CSV or Excel files for reporting and manual comparison.
Webhooks
Trigger a webhook when a run succeeds, then load fresh market records into an alerting service.
Databases and warehouses
Use questionId as a stable key and scrapedAt as the snapshot time in PostgreSQL, BigQuery, Snowflake, or another store.
Forecasting pipelines
Join Opinion probabilities to internal forecasts, event metadata, or records from other prediction-market actors.
Slack and email alerts
Compare the latest observation with the previous one and notify a channel when probability or volume crosses a threshold.
JavaScript API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/opinion-labs-prediction-markets-scraper').call({status: 'active',categories: ['Macro'],maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python API example
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/opinion-labs-prediction-markets-scraper').call(run_input={'searchQuery': 'Fed', 'status': 'all', 'maxItems': 50})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL API example
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~opinion-labs-prediction-markets-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"status":"active","maxItems":50}'
Fetch dataset items using the defaultDatasetId returned by the run.
Use with Apify MCP
Connect the Actor through the Apify MCP server.
Claude Code
claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/opinion-labs-prediction-markets-scraper" \--header "Authorization: Bearer YOUR_APIFY_TOKEN"
Claude Desktop
Add this server to the mcpServers object in Claude Desktop settings:
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=automation-lab/opinion-labs-prediction-markets-scraper","--header","Authorization: Bearer YOUR_APIFY_TOKEN"]}}}
Cursor
Open Settings โ Tools & MCP, add a remote HTTP server, and use the same MCP URL and authorization header.
VS Code
Add the same remote MCP endpoint to your VS Code MCP configuration and provide the bearer token as an authorization header.
Example prompts:
- โScrape active Opinion Macro markets and rank them by 24-hour volume.โ
- โFind Opinion markets whose rules mention the Federal Reserve.โ
- โExport high-volume Opinion market probabilities for my dashboard.โ
Data quality and normalization
Prices are converted from source strings to numbers while preserving their original probability scale from 0 to 1.
Large identifiers remain strings to avoid precision loss.
Categorical child markets are emitted as individual records when Opinion serializes them as market objects.
Records are deduplicated by questionId during each run.
The Actor fails rather than returning a misleading successful empty run when the source format cannot be parsed.
Limitations
- Coverage is the anonymous market catalog serialized by Opinion's public application.
- Opinion can change its frontend or field semantics without notice.
- The Actor does not place trades or connect to a wallet.
- It does not use the API-key-gated Opinion OpenAPI.
- It does not reconstruct historical odds before the first scheduled run.
- Some markets may omit last prices, condition IDs, liquidity, or resolution URLs.
- Text filtering is substring matching, not semantic search.
Tips for reliable workflows
- Use stable IDs rather than titles when joining snapshots.
- Keep a
scrapedAtcolumn in every downstream table. - Filter by volume when monitoring only liquid markets.
- Preserve rules because similarly titled markets can resolve differently.
- Start with a small result limit before scheduling a larger export.
- Inspect
statusCodeif Opinion introduces a source state not yet normalized.
Troubleshooting
Why did my run return zero records?
Your filters may not match the current catalog. Remove searchQuery, categories, and minimum volume, then retry with status: all.
A valid no-match filter returns an empty dataset. A source extraction failure makes the run fail and records the reason in the log.
Why is a probability missing?
Opinion may expose buy and sell quotes without a last market price, or vice versa. Missing values are omitted instead of guessed.
Why is my category filter empty?
Use the exact source category label. Run once without categories, inspect the categories field, and copy the desired label.
Do I need a proxy?
No proxy setup is required from you. The Actor tries the cheapest direct route first and automatically uses an Apify residential IP in a supported region only when Opinion returns its regional-unavailability page.
Is scraping Opinion legal?
This Actor accesses anonymous public market information and does not bypass login, wallet, or private API controls.
You are responsible for using the data lawfully and in accordance with applicable terms, database rights, financial regulations, and privacy rules.
Prediction-market probabilities are not financial advice. Verify important information at the linked source and understand each market's rules before making decisions.
Related prediction market scrapers
Use these Automation Labs actors when you need another venue:
- Limitless Prediction Markets Scraper โ Limitless markets, order books, and history.
- Robinhood Prediction Markets Scraper โ public Robinhood contracts, probabilities, volume, and rules.
Keep each venue's identifiers and rule semantics separate when comparing markets.
FAQ
Does it require an Opinion account or API key?
No. V1 uses public market data available anonymously in the Opinion application.
Can it trade for me?
No. It is a read-only scraper and data extractor.
Can I monitor one subject?
Yes. Use searchQuery, categories, status, and minimum volume together.
Does it include resolved markets?
It returns resolved records visible in the public catalog when status is all or resolved.
Can I export JSON, CSV, Excel, or XML?
Yes. Apify datasets support each format.
Can I run it on a schedule?
Yes. Scheduling is one of the main use cases for probability and volume snapshots.
Are YES and NO values percentages?
They are decimal probabilities from 0 to 1. Multiply by 100 for a percentage display.
Is every market guaranteed to have every field?
No. Optional fields are emitted only when Opinion supplies a usable value.
Support
If a run fails, include the run URL, input, and the relevant log excerpt when opening an issue on the Actor page.
Do not include wallet secrets, private tokens, or unrelated personal data.
Clear reproduction details help distinguish a source change from a filter that legitimately matched no current records.