Opinion Labs Prediction Markets Scraper avatar

Opinion Labs Prediction Markets Scraper

Pricing

Pay per event

Go to Apify Store
Opinion Labs Prediction Markets Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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?

FieldMeaning
titleFull market question or outcome title
titleShortShort title supplied by Opinion
slugStable URL slug
questionIdOpinion question identifier
topicIdParent topic identifier
conditionIdCondition identifier when exposed
categoriesOpinion category and topic labels
statusNormalized active, upcoming, resolved, or unknown
createdAtMarket creation time
cutoffAtTrading or resolution cutoff time
resolvedAtResolution time when available
rulesMarket resolution rules
resolutionSourcePrimary source URL found in the rules
yesBuyProbabilityCurrent YES buy price/probability
yesSellProbabilityCurrent YES sell price/probability
yesLastProbabilityLast/market YES probability
noBuyProbabilityCurrent NO buy price/probability
noSellProbabilityCurrent NO sell price/probability
noLastProbabilityLast/market NO probability
volumeTotal reported trading volume
volume24hReported volume over 24 hours
volume7dReported volume over seven days
liquidityReported liquidity capacity
sourceUrlDirect Opinion market link
scrapedAtUTC observation timestamp

Missing source values are omitted rather than invented or converted to zero.

How to scrape Opinion prediction markets

  1. Open the Actor input page.
  2. Enter an optional text query such as Fed or Bitcoin.
  3. Add exact categories if you need a narrower feed.
  4. Choose a market status.
  5. Set a minimum volume and maximum result count.
  6. Click Start.
  7. 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:

  1. create an Apify schedule for the Actor;
  2. choose a stable filter, such as active Macro markets;
  3. run hourly or daily;
  4. append dataset records to your database or warehouse;
  5. group observations by questionId and sort by scrapedAt.

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 ApifyClient
client = 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().items
print(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 scrapedAt column 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 statusCode if 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.

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.

Use these Automation Labs actors when you need another venue:

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.