Collect Metaculus questions, community forecasts and forecast history, question metadata, options, and comment feeds as normalized JSON for research and tracking. Not investment, forecasting, or decision advice.
Structured output
Use Crawlora's Metaculus API to collect public forecasting questions, community forecasts, forecast history, metadata, options, category and tournament question lists, and comment feeds without maintaining custom collectors or response normalization.
Forecast research workflows
Public Metaculus questions and forecasts can support research dashboards, topic monitoring, tournament tracking, forecast-history snapshots, and AI-agent context when handled as public research data.
Plan prediction market data workflowsRequest schema
These parameters come from the active Metaculus questions catalog entry.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| topic | string | No | Optional Metaculus topic slug | - |
| limit | integer | No | Rows to return, default 10, max 25 | - |
Example JSON
This example is rendered from the active endpoint catalog so the page stays aligned with Docs and Playground.
{
"code": 200,
"msg": "OK",
"data": {
"limit": 1,
"source_url": "https://www.metaculus.com/questions/",
"fetched_at": "2026-06-07T14:00:00Z",
"questions": [
{
"id": 43612,
"question_id": 43609,
"title": "Tampa sulphur price in June 2026?",
"status": "open",
"question_type": "numeric",
"forecaster_count": 54,
"comment_count": 16,
"public_page_derived": true
}
]
}
}Endpoint catalog
/metaculus/questionsReturns normalized Metaculus question rows from credential-free public page data. The endpoint fails closed on authenticated API responses or Cloudflare challenge pages.
Response notes
- `data.questions` contains public page-derived rows, not the authenticated Metaculus API payload. - Forecast values are extracted from the public aggregate payload when present. - Upstream authentication, challenge, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 1, "source_url": "https://www.metaculus.com/questions/", "fetched_at": "2026-06-07T14:00:00Z", "questions": [ { "id": 43612, "question_id": 43609, "title": "Tampa sulphur price in June 2026?", "status": "open", "question_type": "numeric", "forecaster_count": 54, "comment_count": 16, "public_page_derived": true } ] } } ```
MCP tool metaculus_questions
/metaculus/question/{id}Returns one normalized Metaculus question from credential-free public page data.
Response notes
- The response is derived from public page data, not from the authenticated Metaculus API. - Upstream authentication, challenge, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "source_url": "https://www.metaculus.com/questions/43612/", "fetched_at": "2026-06-07T14:00:00Z", "question": { "id": 43612, "question_id": 43609, "title": "Tampa sulphur price in June 2026?", "status": "open", "public_page_derived": true } } } ```
MCP tool metaculus_question
/metaculus/question/{id}/forecastsReturns compact public latest forecast summaries by aggregation method for one Metaculus question.
Response notes
- `data.public_page_derived` is `true`. - `data.methods` is parsed from public `question.aggregations` page data. - Preferred methods are ordered first when present: `recency_weighted`, `unweighted`, `single_aggregation`. - Each method exposes forecaster count, the first center/lower/upper value, raw center/bound arrays, and available history point count. - Invalid ids return invalid-parameter errors before upstream IO. - Upstream authentication, challenge pages, missing aggregation data, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "question": { "id": 43612, "title": "Tampa sulphur price in June 2026?", "public_page_derived": true }, "methods_count": 1, "methods": [ { "method": "recency_weighted", "forecaster_count": 54, "center": 0.52, "lower": 0.37, "upper": 0.66, "history_points": 25 } ], "public_page_derived": true } } ```
MCP tool metaculus_question_forecasts
/metaculus/question/{id}/forecast-historyReturns public aggregation forecast history points for one Metaculus question from credential-free public page data. The `method` enum accepts `recency_weighted`, `unweighted`, and `single_aggregation`.
Response notes
- `data.public_page_derived` is `true`. - `data.points` is parsed from public `aggregations.{method}.history` page data. - Each point exposes timestamp bounds, forecaster count, the first center/lower/upper value, and the raw center/bound arrays. - Invalid ids, methods, or `max_points` values return invalid-parameter errors before upstream IO. - Upstream authentication, challenge, missing history, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "method": "recency_weighted", "points_count": 1, "max_points": 500, "question": { "id": 43612, "title": "Tampa sulphur price in June 2026?", "public_page_derived": true }, "points": [ { "start_ts": 1780333200, "end_ts": 1780333580.206417, "start_time": "2026-06-01T17:00:00Z", "end_time": "2026-06-01T17:06:20Z", "forecaster_count": 17, "center": 0.36, "lower": 0.26, "upper": 0.61 } ], "public_page_derived": true } } ```
MCP tool metaculus_question_forecast_history
/metaculus/question/{id}/metadataReturns public metadata for one Metaculus question, including option labels, option history, scaling metadata, resolution fields, and timing fields when present.
Response notes
- `data.public_page_derived` is `true`. - `data.options`, `data.all_options_ever`, and `data.options_history` are present for public multiple-choice questions when the page exposes them. - `data.scaling`, `data.resolution`, and `data.possibilities` are returned only when public page data exposes those fields. - Invalid ids return invalid-parameter errors before upstream IO. - Upstream authentication, challenge pages, missing question payloads, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "question": { "id": 43731, "question_id": 43761, "title": "OpenAI or Anthropic valuation?", "question_type": "multiple_choice", "public_page_derived": true }, "group_variable": "Company", "options": ["OpenAI", "Anthropic"], "options_history": [ { "changed_at": "0001-01-01T00:00:00", "options": ["OpenAI", "Anthropic"] } ], "public_page_derived": true } } ```
MCP tool metaculus_question_metadata
/metaculus/question/{id}/optionsReturns public multiple-choice option labels and latest option-level forecast values for one Metaculus question. The `method` enum accepts `recency_weighted`, `unweighted`, and `single_aggregation`.
Response notes
- `data.public_page_derived` is `true`. - `data.options` aligns public option labels with latest aggregation arrays by index. - Each option may include center, lower, upper, mean, forecast value, and forecaster count when the public payload exposes those fields. - Invalid ids or methods return invalid-parameter errors before upstream IO. - Non-option questions, missing option labels, missing aggregation data, upstream authentication, challenge pages, or parser drift are returned as typed upstream errors. Example response: ```json { "code": 200, "msg": "OK", "data": { "question": { "id": 43731, "question_id": 43761, "title": "OpenAI or Anthropic valuation?", "question_type": "multiple_choice", "public_page_derived": true }, "method": "recency_weighted", "options_count": 2, "options": [ { "index": 0, "label": "OpenAI", "center": 0.42, "lower": 0.31, "upper": 0.43, "mean": 0.39, "forecast_value": 0.42, "forecaster_count": 5 } ], "public_page_derived": true } } ```
MCP tool metaculus_question_options
/metaculus/category/{slug}/questionsReturns normalized Metaculus question rows from a credential-free public category feed page. Allowed category slugs: artificial-intelligence, computing-and-math, cryptocurrencies, economy-business, elections, environment-climate, geopolitics, health-pandemics, law, metaculus, natural-sciences, nuclear, politics, social-sciences, space, sports-entertainment, technology.
Response notes
- `data.feed` is `category`. - `data.source_url` uses `/questions/?categories={slug}&for_main_feed=false`. - Unsupported category slugs return invalid-parameter errors before upstream IO. - Upstream authentication, challenge, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 1, "feed": "category", "source_url": "https://www.metaculus.com/questions/?categories=artificial-intelligence&for_main_feed=false", "fetched_at": "2026-06-07T14:00:00Z", "questions": [ { "id": 43612, "title": "Example artificial intelligence question", "comment_count": 16, "public_page_derived": true } ] } } ```
MCP tool metaculus_category_questions
/metaculus/tournament/{slug}/questionsReturns normalized Metaculus question rows for one public tournament, filtered by its slug. A slug that does not exist returns 404.
Response notes
- `data.feed` is `tournament`. - Every returned question belongs to the requested tournament; `data.questions[].projects[].slug` carries it. - A tournament slug that does not exist returns `404`, not an unfiltered feed. - A tournament that exists but currently has no questions returns `200` with an empty `data.questions`. - Invalid slugs or limits return invalid-parameter errors before upstream IO. - Upstream authentication, challenge pages, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 2, "feed": "tournament", "questions": [ { "id": 43612, "title": "Tampa sulphur price in June 2026?", "public_page_derived": true } ] } } ```
MCP tool metaculus_tournament_questions
/metaculus/project/{slug}/questionsReturns normalized Metaculus question rows for one public project, filtered by its slug. A slug that does not exist returns 404.
Response notes
- `data.feed` is `project`. - Every returned question belongs to the requested project; `data.questions[].projects[].slug` carries it. - A project slug that does not exist returns `404`, not an unfiltered feed. - A project that exists but currently has no questions returns `200` with an empty `data.questions`. - Invalid slugs or limits return invalid-parameter errors before upstream IO. - Upstream authentication, challenge pages, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 2, "feed": "project", "questions": [ { "id": 43612, "title": "Tampa sulphur price in June 2026?", "public_page_derived": true } ] } } ```
MCP tool metaculus_project_questions
/metaculus/comments-feedReturns normalized Metaculus question rows for the questions referenced by the most recent public comments, in comment recency order. Derived from credential-free public Metaculus data; upstream comment bodies are not exposed.
Response notes
- `data.feed` is `comments_feed`. - `data.questions` contains the questions referenced by the most recent public comments, ordered by most recent comment first. - Upstream authentication, challenge, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 1, "feed": "comments_feed", "source_url": "https://www.metaculus.com/questions/?comments_feed=true", "fetched_at": "2026-06-07T14:00:00Z", "questions": [ { "id": 43612, "title": "Tampa sulphur price in June 2026?", "comment_count": 16, "public_page_derived": true } ] } } ```
MCP tool metaculus_comments_feed
/metaculus/top-commentsReturns normalized Metaculus question rows for the questions whose recent public comments collected the highest vote scores over roughly the last week. Derived from credential-free public Metaculus data; upstream comment bodies are not exposed.
Response notes
- `data.feed` is `weekly_top_comments`. - `data.questions` contains the questions referenced by the last week's public comments, ranked by summed comment vote score. - Upstream authentication, challenge, or parser drift is returned as a typed upstream error. Example response: ```json { "code": 200, "msg": "OK", "data": { "limit": 1, "feed": "weekly_top_comments", "source_url": "https://www.metaculus.com/questions/?weekly_top_comments=true", "fetched_at": "2026-06-07T14:00:00Z", "questions": [ { "id": 43612, "title": "Tampa sulphur price in June 2026?", "comment_count": 16, "public_page_derived": true } ] } } ```
MCP tool metaculus_top_comments
Managed execution
Crawlora wraps supported public Metaculus pages and feeds behind API-key protected endpoints with documented request parameters, normalized responses, Playground examples, and credit-based usage.
Endpoint-specific request handling for questions, forecasts, history, metadata, options, categories, tournaments, projects, and comments
Normalized JSON responses for supported public Metaculus pages
Docs and Playground examples generated from the active endpoint catalog
Documented error behavior instead of silently returning unusable upstream responses
Credit-based usage tied to documented endpoint costs
One Crawlora API key across Metaculus and adjacent prediction-market endpoints
Build or buy
Use this comparison to decide whether to maintain scraping infrastructure internally or call a managed endpoint.
| Requirement | Building internally | Crawlora |
|---|---|---|
| Endpoint coverage | Build separate collectors for questions, forecasts, history, metadata, categories, tournaments, and comments. | Call documented Metaculus endpoints from one API surface. |
| Schema normalization | Normalize forecast, option, metadata, and comment records yourself. | Use structured JSON fields generated from the active catalog. |
| Parser maintenance | Track upstream page or feed changes and empty-result edge cases. | Use endpoint-specific collection maintained behind the API. |
| Developer testing | Build examples, docs, and a test console. | Use Crawlora Docs and Playground before integrating. |
| Usage billing | Build your own metering and plan limits. | Use credit-based endpoint weights and API-key usage tracking. |
Crawlora is not Metaculus and does not provide official Metaculus API documentation. Crawlora provides structured public web data extraction endpoints for supported public Metaculus pages. Metaculus data is for research and monitoring workflows only; it is not investment, forecasting, financial, legal, or decision advice. Customers are responsible for complying with applicable laws, third-party rights, platform terms, and Crawlora terms.
Related APIs
Connect this endpoint with adjacent Crawlora search, monitoring, docs, and pricing pages.
Collect public prediction-market questions, markets, prices, and activity where supported.
OpenCollect public Kalshi event and market data for research workflows.
OpenPlan public forecasting and market-data workflows.
OpenFeed structured public web data into agents and automations.
OpenReview plans, credits, limits, and usage options.
OpenBrowse all active Crawlora API endpoints.
OpenHow to scrape Metaculus
Crawlora's Metaculus endpoints are GETs over credential-free public Metaculus pages that fail closed on authenticated responses or Cloudflare challenge pages. Lists: /metaculus/questions with limit and topic, /metaculus/category/{slug}/questions for a category, /metaculus/project/{slug}/questions and /metaculus/tournament/{slug}/questions for a project or tournament, and /metaculus/comments-feed and /metaculus/top-comments for the questions behind recent and top-voted public comments. Per question: /metaculus/question/{id}, /metaculus/question/{id}/forecasts for the latest community aggregates, /metaculus/question/{id}/forecast-history with method (recency_weighted, unweighted or single_aggregation) and max_points, /metaculus/question/{id}/options for multiple-choice questions and /metaculus/question/{id}/metadata for resolution, scaling and timing fields. Not investment, forecasting or decision advice.
GET /metaculus/questions?limit=<n>&topic=<topic> for the public feed, or /metaculus/category/{slug}/questions (slugs such as artificial-intelligence, economy-business, elections), /metaculus/project/{slug}/questions or /metaculus/tournament/{slug}/questions for a defined set. Unknown slugs return 404.
GET /metaculus/question/{id} for the normalized question and /metaculus/question/{id}/forecasts for the latest community aggregate by method. For multiple-choice questions, /metaculus/question/{id}/options returns option labels with their latest values.
GET /metaculus/question/{id}/forecast-history?method=recency_weighted&max_points=<n> returns the public aggregation's history points, which is the series a forecast tracker plots. /metaculus/question/{id}/metadata adds resolution, scaling and timing fields for interpreting it.
GET /metaculus/comments-feed and /metaculus/top-comments return the questions behind the most recent and highest-voted public comments in the last week, which is a cheap signal of where attention is moving. Comment bodies themselves are not returned.
FAQ
Answers for developers evaluating Crawlora for supported public Metaculus forecasting pages.
Yes. Crawlora provides Metaculus endpoints for supported public Metaculus pages and returns structured JSON through documented API routes.
No. Crawlora is not Metaculus and does not provide official Metaculus API documentation. Use Metaculus-owned documentation for official platform guidance; use Crawlora Docs for Crawlora endpoint parameters and response schemas.
The active catalog includes public questions, question detail, forecasts, forecast history, metadata, options, category question lists, tournament question lists, project question lists, comments-feed records, and top comments where supported.
Yes. Use question forecast and forecast-history endpoints where supported, then store snapshots by question id and timestamp for research dashboards or monitoring workflows.
No. Crawlora returns public research data only. It is not investment, forecasting, financial, legal, or decision advice, and customers are responsible for downstream use.
You use a Crawlora API key sent as the x-api-key header to call Crawlora's Metaculus endpoints. There is no separate Metaculus key required for these Crawlora routes.
Yes, where supported by the active catalog. The Metaculus endpoint set includes category, tournament, and project question-list routes with slug and limit parameters.
Yes. Metaculus endpoints return normalized JSON with documented request parameters, response schemas, examples, and Playground-tested calls where available.
List questions with Crawlora's /metaculus/questions endpoint or a category, project or tournament route, then GET /metaculus/question/{id}, /metaculus/question/{id}/forecasts and /metaculus/question/{id}/forecast-history for the current aggregate and its history. All calls are GETs over public pages.
recency_weighted, unweighted and single_aggregation, passed as method to the /metaculus/question/{id}/forecast-history and /metaculus/question/{id}/options endpoints.
No. The comments-feed and top-comments endpoints return the questions referenced by recent and top-voted public comments, in comment order, but upstream comment bodies are not included.
The endpoints fail closed: they return a documented error rather than partial or authenticated data, and the call is not billed as a success.
No. The endpoints return public community forecasts and metadata for research and tracking. They are not investment, forecasting or decision advice.
Guides
Read Crawlora guides and comparisons that use the Metaculus API.
Test Metaculus questions in Playground, inspect endpoint schemas in Docs, and compare credit-based usage on the pricing page.