Metaculus API endpoint
Returns public metadata for one Metaculus question, including option labels, option history, scaling metadata, resolution fields, and timing fields when present.
/metaculus/question/{id}/metadataPath parameters:
id: required Metaculus question or post id, for example 43731.Query parameters:
None.
Notable response behavior:
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.| Field | In the sample | Value in the sample |
|---|---|---|
| question.id | Has a value | |
| question.question_id | Has a value | |
| question.title | Has a value | “Which country will be first to factor the 2048-bit RSA chal…” |
| question.question_title | Has a value | “Which country will be first to factor the 2048-bit RSA chal…” |
| question.slug | Has a value | |
| question.url | Has a value | metaculus.com |
| question.status | Has a value | “open” |
| question.question_type | Has a value | “multiple_choice” |
| question.comment_count | Has a value | 5 |
| question.forecaster_count | Has a value | 5 |
| question.forecasts_count | Has a value | 11 |
| question.latest_forecast_center | Has a value | 0.47 |
| question.latest_forecast_lower | Has a value | 0.42 |
| question.latest_forecast_upper | Has a value | 0.61 |
| question.open_time | Has a value | 2026-06-22 |
| question.scheduled_close_time | Has a value | 2099-12-30 |
| question.scheduled_resolve_time | Has a value | 2099-12-30 |
| question.published_at | Has a value | 2026-06-21 |
| question.edited_at | Has a value | 2026-09-02 |
| question.categories | Has a value | 3 entries |
| question.projects | Has a value | 1 entry |
| question.public_page_derived | Has a value | |
| short_title | Has a value | “Which country will be first to factor the 2048-bit RSA chal…” |
| group_variable | Has a value | “Country” |
| options | Has a value | 3 entries |
| all_options_ever | Has a value | 3 entries |
| options_history | Has a value | 1 entry |
| options_order | Has a value | “DEFAULT” |
| default_aggregation_method | Has a value | “recency_weighted” |
| default_score_type | Has a value | “peer” |
| actual_close_time | Has a value | 2099-12-30 |
| public_page_derived | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Metaculus question or post id | 43731 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/metaculus/question/43731/metadata" \ -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
},
"group_variable": "Company",
"options": [
"OpenAI",
"Anthropic"
],
"options_history": [
{
"changed_at": "0001-01-01T00:00:00",
"options": [
"OpenAI",
"Anthropic"
]
}
],
"public_page_derived": true
}
}Request schema
No body schema
Response schema
#/definitions/metaculus.metadataResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | metaculus.QuestionMetadataResponse | No | ||||
| data.actual_close_time | string | No | 2026-12-30T23:59:00Z | Time the question actually closed to forecasts, as Metaculus reports it. | ||
| data.actual_resolve_time | string | No | 2027-01-02T00:00:00Z | Time the question actually resolved, as Metaculus reports it. | ||
| data.all_options_ever | array | No | Every option label the question has ever had. | |||
| data.default_aggregation_method | string | No | recency_weighted | Aggregation method Metaculus shows by default, for example `recency_weighted`. | ||
| data.default_score_type | string | No | peer | Score type Metaculus uses by default, for example `peer`. | ||
| data.fetched_at | string | No | 2026-06-07T14:00:00Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.group_variable | string | No | Company | Name of the variable that distinguishes the questions in a group, for example `Company`. | ||
| data.inbound_outcome_count | integer | No | 10 | Number of outcomes inside the question's range. | ||
| data.include_bots_in_aggregates | boolean | No | false | Whether bot forecasts are included in the aggregate forecasts. | ||
| data.open_lower_bound | boolean | No | false | Whether the answer can fall below the lower end of the range. | ||
| data.open_upper_bound | boolean | No | false | Whether the answer can fall above the upper end of the range. | ||
| data.options | array | No | Current option labels of a multiple-choice question. | |||
| 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.options_order | string | No | DEFAULT | How the options are ordered, for example `DEFAULT`. | ||
| data.possibilities | unknown | No | Possible outcomes of the question, as Metaculus describes them. | |||
| 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.resolution | string | No | Resolution of the question, as Metaculus reports it. Omitted while unresolved. | |||
| data.resolution_set_time | string | No | 2027-01-02T00:00:00Z | Time the resolution was set, as Metaculus reports it. | ||
| data.scaling | object | No | Range and scale settings of a numeric or date question. | |||
| data.scaling.continuous_range | array | No | ContinuousRange passes through Metaculus's scaling.continuous_range: null for discrete questions, an array of numbers (the CDF internal locations) for continuous/numeric ones. It was previously typed []string, so hydrating a commented continuous question failed to decode and 503'd the comments feeds; numbers are the correct element type. | |||
| data.scaling.inbound_outcome_count | integer | No | 10 | Number of outcomes inside the question's range. | ||
| data.scaling.nominal_max | number | No | 100 | Highest value of the range as shown to forecasters. | ||
| data.scaling.nominal_min | number | No | 0 | Lowest value of the range as shown to forecasters. | ||
| data.scaling.open_lower_bound | boolean | No | false | Whether the answer can fall below the lower end of the range. | ||
| data.scaling.open_upper_bound | boolean | No | false | Whether the answer can fall above the upper end of the range. | ||
| data.scaling.range_max | number | No | 100 | Upper end of the question's range. | ||
| data.scaling.range_min | number | No | 0 | Lower end of the question's range. | ||
| data.scaling.zero_point | number | No | 0 | Zero point of the question's range, when Metaculus defines one. | ||
| data.short_title | string | No | OpenAI or Anthropic - higher valuation on Jan 1, 2027? | Short form of the question title. | ||
| 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/metadata" \
-H "x-api-key: $CRAWLORA_API_KEY"