Metaculus API endpoint
Returns 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`.
/metaculus/question/{id}/optionsPath parameters:
id: required Metaculus question or post id, for example 43731.Query parameters:
method: optional aggregation method. Allowed values: recency_weighted, unweighted, single_aggregation. Defaults to recency_weighted.Notable response behavior:
data.public_page_derived is true.data.options aligns public option labels with latest aggregation arrays by index.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| index | 3 | |
| label | 3 | “United States of America” and 2 other values |
| center | 3 | 0.19 to 0.47, median 0.34 |
| lower | 3 | 0.05 to 0.42, median 0.34 |
| upper | 3 | 0.22 to 0.61, median 0.36 |
| mean | 3 | 0.14 to 0.54, median 0.32 |
| forecast_value | 3 | 0.19 to 0.47, median 0.34 |
| forecaster_count | 3 | 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Metaculus question or post id | 43731 | |
| method | string | No | Aggregation method Allowed values: recency_weighted, unweighted, single_aggregation. | recency_weighted | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/metaculus/question/43731/options?method=recency_weighted" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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
}
}Request schema
No body schema
Response schema
#/definitions/metaculus.optionsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | metaculus.OptionsResponse | No | ||||
| data.fetched_at | string | No | 2026-06-07T14:00:00Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.method | string | No | recency_weighted | Aggregation method used: `recency_weighted`, `unweighted` or `single_aggregation`. | ||
| data.options | array | No | Latest forecast for each option of the question. | |||
| data.options[].center | number | No | 0.42 | Central value of the community forecast for this option. | ||
| data.options[].forecast_value | number | No | 0.42 | Forecast value for this option, as Metaculus reports it. | ||
| data.options[].forecaster_count | integer | No | 5 | Number of forecasters behind this option's forecast. | ||
| data.options[].index | integer | No | 0 | Position of the option in the question's option list, starting at 0. | ||
| data.options[].label | string | No | OpenAI | Name of the option, for example `OpenAI`. | ||
| data.options[].lower | number | No | 0.31 | Lower bound of the forecast interval for this option. | ||
| data.options[].mean | number | No | 0.39 | Mean of the community forecast for this option. | ||
| data.options[].upper | number | No | 0.43 | Upper bound of the forecast interval for this option. | ||
| data.options_count | integer | No | 2 | Number of options returned. | ||
| data.options_history | array | No | Earlier versions of the option list, when the options changed. | |||
| data.options_history[].changed_at | string | No | 0001-01-01T00:00:00 | Time the option list changed, as Metaculus reports it. | ||
| data.options_history[].options | array | No | Option labels in effect from that time. | |||
| data.public_page_derived | boolean | No | true | Always `true`: the values are those shown publicly on Metaculus, without a login. | ||
| data.question | object | No | Summary of the Metaculus question this response is about. | |||
| data.question.categories | array | No | Categories the question is filed under. | |||
| data.question.categories[].emoji | string | No | 💼 | Emoji shown next to the category or project on Metaculus. | ||
| data.question.categories[].id | integer | No | 3698 | Metaculus id of the category or project. | ||
| data.question.categories[].name | string | No | Economy & Business | Display name, for example `Economy & Business`. | ||
| data.question.categories[].slug | string | No | economy-business | URL slug, for example `economy-business`. | ||
| data.question.categories[].type | string | No | category | Kind of project, for example `category` or `tournament`. | ||
| data.question.comment_count | integer | No | 16 | Number of comments on the question. | ||
| data.question.edited_at | string | No | 2026-06-07T13:14:34Z | Time the question was last edited, in UTC (RFC 3339). | ||
| data.question.forecaster_count | integer | No | 54 | Number of forecasters who have forecast on the question. | ||
| data.question.forecasts_count | integer | No | 149 | Total number of forecasts submitted on the question. | ||
| data.question.id | integer | No | 43612 | Metaculus post id of the question. Use it with the question endpoints. | ||
| data.question.latest_forecast_center | number | No | 0.52 | Central value of the latest community forecast, as Metaculus reports it. | ||
| data.question.latest_forecast_lower | number | No | 0.37 | Lower bound of the latest community forecast interval. | ||
| data.question.latest_forecast_upper | number | No | 0.66 | Upper bound of the latest community forecast interval. | ||
| data.question.open_time | string | No | 2026-06-01T17:00:00Z | Time the question opened for forecasts, in UTC (RFC 3339). | ||
| data.question.projects | array | No | Tournaments and projects the question belongs to. | |||
| data.question.projects[].emoji | string | No | 💼 | Emoji shown next to the category or project on Metaculus. | ||
| data.question.projects[].id | integer | No | 3698 | Metaculus id of the category or project. | ||
| data.question.projects[].name | string | No | Economy & Business | Display name, for example `Economy & Business`. | ||
| data.question.projects[].slug | string | No | economy-business | URL slug, for example `economy-business`. | ||
| data.question.projects[].type | string | No | category | Kind of project, for example `category` or `tournament`. | ||
| data.question.public_page_derived | boolean | No | true | Always `true`: the values are those shown publicly on Metaculus, without a login. | ||
| data.question.published_at | string | No | 2026-05-29T15:33:53Z | Time the question was published, in UTC (RFC 3339). | ||
| data.question.question_id | integer | No | 43609 | Metaculus id of the underlying question, which can differ from the post `id`. | ||
| data.question.question_title | string | No | What will be the World Bank monthly price of liquid sulphur in June 2026? | Full wording of the question. | ||
| data.question.question_type | string | No | numeric | Question type, for example `binary`, `numeric` or `multiple_choice`. | ||
| data.question.resolved | boolean | No | false | Whether the question has been resolved. | ||
| data.question.scheduled_close_time | string | No | 2026-07-15T00:00:00Z | Time the question is scheduled to close to forecasts, in UTC (RFC 3339). | ||
| data.question.scheduled_resolve_time | string | No | 2026-09-07T00:00:00Z | Time the question is scheduled to resolve, in UTC (RFC 3339). | ||
| data.question.slug | string | No | tampa-sulphur-price-in-june-2026 | URL slug of the question. | ||
| data.question.status | string | No | open | Question status on Metaculus, for example `open`. | ||
| data.question.title | string | No | Tampa sulphur price in June 2026? | Question title as shown on Metaculus. | ||
| data.question.unit | string | No | USD/metric ton | Unit of the answer for numeric questions, for example `USD/metric ton`. | ||
| data.question.url | string | No | https://www.metaculus.com/questions/43612/tampa-sulphur-price-in-june-2026/ | Metaculus page URL of the question. | ||
| data.source_url | string | No | https://www.metaculus.com/questions/43731/ | URL the data was read from. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/metaculus/question/43731/options?method=recency_weighted" \
-H "x-api-key: $CRAWLORA_API_KEY"