Economic Indicators MCP Server is an MCP (Model Context Protocol) server on ApifyForge. MCP server for multi-source economic intelligence. Wraps 6 specialized actors: BLS (U.S. labor/prices), FRED (800K+ Federal Reserve series), World Bank (217 economies), OECD (38 member countries), IMF WEO (global... It costs $0.05 per bls-data. It exposes 7 tools: bls-data, fred-data, world-bank-data, oecd-data, imf-data, eurostat-data, country-comparison. Best for AI developers and agent builders who need structured real-world data inside Claude, Cursor, or other MCP-compatible clients. Not ideal for non-AI workflows or use cases that don't involve an MCP-compatible client. Maintenance pulse: 90/100. Last verified March 27, 2026. Built by Ryan Clinton (ryanclinton on Apify).
Economic Indicators MCP Server
Economic Indicators MCP Server is an MCP (Model Context Protocol) server available on ApifyForge at $0.05 per bls-data. MCP server for multi-source economic intelligence. Wraps 6 specialized actors: BLS (U.S. labor/prices), FRED (800K+ Federal Reserve series), World Bank (217 economies), OECD (38 member countries), IMF WEO (global forecasts), and Eurostat (EU statistics). Includes a unified country comparison tool.
Best for AI developers and agent builders who need structured real-world data inside Claude, Cursor, or other MCP-compatible clients.
Not ideal for non-AI workflows or use cases that don't involve an MCP-compatible client.
Tools exposed
Each pricing event corresponds to a tool your AI agent can call through MCP.
bls-dataQuery Bureau of Labor Statistics economic data series. · $0.05/callfred-dataQuery Federal Reserve Economic Data series. · $0.05/callworld-bank-dataQuery World Bank development indicators. · $0.05/calloecd-dataQuery OECD economic statistics. · $0.05/callimf-dataQuery IMF economic indicators. · $0.05/calleurostat-dataQuery Eurostat EU economic statistics. · $0.05/callcountry-comparisonComposite economic comparison across multiple data sources. · $0.15/callExample prompts
Natural language queries you can ask your AI assistant that would trigger this MCP server.
What to know
- Requires an MCP-compatible client (Claude Desktop, Cursor, Windsurf, or similar).
- Tool call results depend on the availability of upstream public APIs.
- Requires an Apify account and API token for authentication.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| bls-data | Query Bureau of Labor Statistics economic data series. | $0.05 |
| fred-data | Query Federal Reserve Economic Data series. | $0.05 |
| world-bank-data | Query World Bank development indicators. | $0.05 |
| oecd-data | Query OECD economic statistics. | $0.05 |
| imf-data | Query IMF economic indicators. | $0.05 |
| eurostat-data | Query Eurostat EU economic statistics. | $0.05 |
| country-comparison | Composite economic comparison across multiple data sources. | $0.15 |
Example: 100 events = $5.00 · 1,000 events = $50.00
Documentation

Economic Indicators MCP is unified macro-data infrastructure for AI agents and quantitative research workflows.
It wraps six free official statistics sources behind a single MCP endpoint: U.S. Bureau of Labor Statistics, Federal Reserve Economic Data (FRED), World Bank, OECD, IMF World Economic Outlook, and Eurostat. Built for macro researchers, sovereign-credit analysts, EM fixed-income desks, central bank watchers, finance bloggers, and AI agents that need real economic context instead of training-cutoff guesses.
The category
Economic Indicators MCP is agent-native official-statistics infrastructure. Unlike manual cross-site CSV downloads (BLS, FRED, World Bank, OECD, IMF, and Eurostat each ship their own format and ID system), Bloomberg-Terminal-style products (priced for sell-side desks, not for AI agents), or LLM-only economic chatbots (which hallucinate numbers and cannot cite a release date), it returns harmonized, source-cited time series and a built-in unified country comparison your agent can reason over directly.
In one sentence
Query inflation, GDP, unemployment, interest rates, debt, trade, population, and forecasts across six official statistics agencies through one MCP endpoint, with a single tool call that returns a unified multi-country economic profile.
What you get from one call
econ_country_comparison fans out to World Bank and IMF in parallel and returns a unified profile for every country you name:
- Summary table with the latest value for nominal GDP, GDP growth %, inflation %, unemployment %, government debt-to-GDP %, and population, one row per country
- Per-country profiles with full time series for each of the six indicators, sorted by year
latestvalue per indicator so an agent can branch on the most recent reading without scanning the arrayincludesForecastsflag so IMF staff projections for future years can be opted insourcesblock naming the upstream providers (World Bank + IMF WEO) so a result is never source-ambiguous- Built-in country-code mapping so an agent can pass ISO 2-letter (
US,CN,DE) or ISO 3-letter (USA,CHN,DEU) and it just works

What makes this different
- Six sources behind one endpoint. One MCP connection replaces six separate API integrations, six separate auth flows, and six separate output schemas.
- Country-code agnostic on the composite tool. Most macro APIs force ISO 2-letter or ISO 3-letter and reject the other.
econ_country_comparisonaccepts either and maps internally. - Forecasts available, opt-in. IMF WEO ships staff projections for future years. The
include_forecastsflag is off by default (clean historical view) and on when an agent needs forward-looking context.
Before vs after
| Without this MCP | With this MCP |
|---|---|
| Sign up for FRED, BLS, World Bank, OECD, IMF, and Eurostat keys separately | One FRED key. Five other sources keyless. |
| Download CPI as a BLS CSV, GDP as a FRED CSV, debt-to-GDP as an IMF Excel, EU HICP as a Eurostat TSV | All time series returned as harmonized JSON, ready to JSON.parse |
| Map ISO alpha-2 to alpha-3 manually between sources | econ_country_comparison maps both ways internally |
| LLM agent guesses "U.S. inflation in 2024 was around 3%" from training data | Agent gets the actual BLS or FRED reading, dated, sourced |
| No IMF forecasts in chatbot answers | include_forecasts=true returns IMF staff projections |
Architecture
6 official statistics sources → 6 sibling actor wrappers → MCP tool layer → agent
(BLS, FRED, World Bank, (one Apify actor per (8 tools, 7 paid +
OECD, IMF WEO, Eurostat) upstream API) 1 free `list_sources`)
↓ ↓ ↓
each owns the upstream normalize to JSON `econ_country_comparison`
quirks (SDMX, series IDs, dataset, skipNulls, fans out WB + IMF
rate limits, API keys) shared item shape in parallel for 6 indicators
↓
summary table +
per-country profiles +
forecasts opt-in
Built for
Macro researchers and sovereign-credit analysts building country dossiers; EM fixed-income desks tracking inflation, debt-to-GDP, and current-account dynamics; central bank watchers monitoring interest-rate, money-supply, and HICP series; finance bloggers and newsletter writers fact-checking macro claims with cited numbers; AI agents (Claude, ChatGPT, Cursor, agent frameworks) that need authoritative macro context for downstream reasoning.
This server runs in Standby mode on the Apify platform. It orchestrates BLS, FRED, World Bank, OECD, IMF, and Eurostat through six sibling actors, charges per MCP tool call (not per upstream record), and returns structured JSON your AI agent reasons over directly.
Questions this MCP answers
- "What is the current U.S. unemployment rate?"
- "How has CPI inflation moved in the Euro Area over the last five years?"
- "Compare GDP per capita and government debt-to-GDP for USA, Germany, and Japan."
- "What is the IMF's projection for India's GDP growth next year?"
- "Find every FRED series related to housing starts."
- "What is the unemployment rate across all EU member states for 2024?"
- "Show me World Bank life-expectancy data for sub-Saharan Africa from 2000."
- "What was U.S. PPI for finished goods last quarter?"
For AI agents
- First tool to reach for when a prompt mentions inflation, GDP, unemployment, interest rates, sovereign debt, trade balance, money supply, or any country-level economic indicator.
- Call
econ_list_sourcesfirst (it is free). It returns the full catalogue of 8 tools, 6 sources, and the coverage map (US-specific / global / OECD / EU), so the planner picks the right tool without trial and error. - FRED requires a free API key. Get one at fred.stlouisfed.org/docs/api/api_key.html. Pass it as the
api_keyargument onecon_us_fred_data, or setFRED_API_KEYas an env var on the actor. - For FRED, use
mode: "search"first if you do not know the series ID. Then call again withmode: "observations"and the resolvedseries_ids[]. Two cheap calls beats guessing a series ID and getting nothing. econ_country_comparisonhandles ISO 2-letter and 3-letter codes interchangeably. PassUS,CN,DEorUSA,CHN,DEU. The tool normalizes internally so an agent does not need to remember which API wants which format.- Toggle
include_forecasts=truewhen the prompt is forward-looking. Default is historical only. Forecasts come from IMF staff projections.
Use this MCP when an AI agent needs to:
- ground a macro answer in an official source with a citable provider
- compare economic fundamentals across countries
- pull a specific time series for charting or downstream analysis
- get IMF forecast values for future years
- query EU-specific HICP or unemployment data
- replace "according to my training data" with "according to FRED, as of {date}"
What data can you access?
| Data Point | Source | Example |
|---|---|---|
| 📈 CPI inflation, unemployment rate, employment, wages, PPI | U.S. Bureau of Labor Statistics | CUUR0000SA0, LNS14000000 |
| 🏦 Federal funds rate, GDP, money supply, housing starts, 800K+ U.S. series | Federal Reserve (FRED) | DFF, GDP, M2SL, HOUST |
| 🌍 GDP, population, poverty, life expectancy, CO2, trade for 217 economies from 1960 | World Bank | NY.GDP.MKTP.CD, SP.POP.TOTL |
| 🏛 Harmonized GDP, unemployment, productivity for 38 OECD members | OECD (SDMX) | OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE1,1.0 |
| 🌐 GDP growth, inflation, debt/GDP, current account for ~190 countries plus IMF forecasts | IMF World Economic Outlook | NGDP_RPCH, PCPIPCH, GGXWDG_NGDP |
| 🇪🇺 EU27 + Euro Area GDP, HICP inflation, unemployment, population, trade | Eurostat | nama_10_gdp, prc_hicp_aind, une_rt_a |
| 📊 Unified multi-country summary (latest GDP, growth, inflation, unemployment, debt, population) | econ_country_comparison (WB + IMF) | One row per country |
| 🗂 Tool and source catalogue with coverage map | econ_list_sources (free) | 8 tools, 6 sources |
Why use Economic Indicators MCP?
Most macro-data workflows are:
- spread across six separate sites with six different ID conventions (FRED series IDs, BLS series IDs, World Bank indicators, OECD SDMX dataflows, IMF WEO codes, Eurostat dataset codes)
- gated behind one or more API key signups, each with its own rate-limit ladder
- delivered as inconsistent CSV/Excel/XML/JSON output that needs custom parsers per source
- impossible for an LLM agent to use directly without a custom integration layer per provider
This MCP turns that into one endpoint. A single MCP connection replaces six API integrations. A single tool call returns harmonized JSON. A single composite call returns a unified multi-country profile drawn from World Bank and IMF in parallel.
Platform capabilities
- Scheduling: run periodic country comparisons on Apify Scheduler; refresh dashboards on a weekly or monthly cadence
- API access: trigger tool calls from Python, JavaScript, or any HTTP client using standard MCP protocol
- Idle-shutdown: standby instance exits after 300s of inactivity (tunable) so platform compute is not billed during quiet periods
- Webhooks: receive failure alerts the moment a tool call fails upstream
- Integrations: pipe results into Notion, Airtable, Sheets, LangChain, LlamaIndex, or any webhook-compatible system
Features
Six source wrappers, one endpoint
- BLS: presets for CPI, unemployment, employment, wages, PPI, plus a
custommode for any BLS series ID. Optional free BLS key raises the rate limit from 25 to 500 requests per day. - FRED: three modes (
search,observations,series) over 800K+ time series. Search by keyword, fetch observations with date range and frequency aggregation (d/w/bw/m/q/sa/a), or get metadata. - World Bank: preset list of the ten most-requested indicators (nominal GDP, GDP per capita, GDP growth, population, poverty headcount, life expectancy, unemployment, CPI, CO2 emissions, trade % GDP) plus a
custom_indicatoroverride for any World Bank code. - OECD: SDMX dataflow access with preset references plus a
custom_datasetoverride. Filter by country (ISO alpha-3, joined with+) and frequency (A/Q/M). - IMF: preset list of 15 IMF WEO indicators covering GDP, growth, inflation, debt, current account, trade, population, plus
include_forecastsfor IMF staff projections. - Eurostat: preset datasets for EU GDP, unemployment, HICP inflation, population, and trade, plus a
custom_datasetoverride. Accepts EU 2-letter country codes and aggregates (EU27_2020, EA20).
Composite layer
econ_country_comparisonruns World Bank and IMF in parallel for six core indicators (nominal GDP, population, GDP growth %, inflation %, govt debt/GDP %, unemployment %), groups results by country, sorts each series by year, and surfaces thelatestvalue per indicator.
Agent-friendly defaults
- Free
econ_list_sourcestool lists all 8 tools, 6 sources, and a coverage map, so a planner does not waste a paid call discovering capability. - Composite tool accepts either ISO 2-letter or ISO 3-letter codes; the internal mapping handles 45 major economies.
- All tools return a
totalcount and acountrieslist at the top of the response for fast triage.
Operational layer
- Idle-shutdown with
STANDBY_IDLE_TIMEOUT_SECS(default 300s) so a customer-pinned MCP session does not bill compute indefinitely. - Failure webhooks wired to the apifyforge.com failure inbox so upstream breakage gets caught fast.
- Per-call PPE charges so a customer pays only when a tool actually fires.
Quickstart workflows
Multi-country macro snapshot
econ_country_comparison
countries: "USA,CHN,DEU,JPN,GBR"
start_year: 2020
→ summary table with latest GDP, growth %, inflation %, unemployment %,
debt/GDP %, population for each country
→ per-country profiles with time series
FRED series discovery then pull
econ_us_fred_data (mode="search", search_text="federal funds rate")
→ list of matching FRED series with IDs
econ_us_fred_data (mode="observations", series_ids=["DFF"], frequency="m")
→ monthly observations for the federal funds rate
EU vs U.S. inflation comparison
econ_us_bls_data (preset="cpi", start_year=2020)
→ U.S. CPI time series
econ_eurostat (dataset="prc_hicp_aind", country="EU27_2020,EA20", start_year="2020")
→ EU27 and Euro Area HICP time series
Use cases for economic indicators
Sovereign risk screen for EM fixed income
An EM fixed-income desk needs to refresh a country dossier before pricing a new sovereign issue. One econ_country_comparison call returns nominal GDP, GDP growth %, inflation %, government debt-to-GDP %, unemployment %, and population for the issuer plus three peer countries, with the latest value surfaced per indicator. A second econ_imf_data call with include_forecasts=true adds IMF staff projections for the next three years. Total elapsed time: under two minutes versus a half-day of manual IMF and World Bank Excel pulls.
Inflation tracking for a macro newsletter
A finance newsletter writer publishes a weekly inflation note. A scheduled econ_us_bls_data call (preset cpi) pulls the latest U.S. CPI release, and a parallel econ_eurostat call (dataset prc_hicp_aind) pulls the Euro Area HICP. Both come back as structured JSON, ready to drop into a chart or table, with the underlying series IDs cited in the response.
AI agent answering "what is U.S. inflation right now"
A Claude or ChatGPT agent connected to this MCP no longer guesses. When a user asks for the latest CPI, the agent calls econ_us_bls_data (preset cpi), receives the dated BLS reading, and answers with the number plus the source ("U.S. Bureau of Labor Statistics, series CUUR0000SA0, latest reading: 3.2% YoY for {month}"). No training-cutoff hedging.
EM macro brief automation
A research operations team generates a weekly emerging-market briefing for 12 countries. A scheduled run calls econ_country_comparison with the 12 ISO codes and include_forecasts=true, gets back a unified summary table and per-country profiles, and pipes the JSON into a templated markdown brief via webhook. Manual data assembly time drops from a full day to a templating job.
Central-bank-watcher monitoring rate moves
A trader watching the federal funds rate runs a scheduled econ_us_fred_data call (series_ids=["DFF"], frequency d) every morning. The MCP returns the latest daily reading from FRED. The trader's pipeline diffs against yesterday's value and pushes a Slack alert on any change. Same pattern works for any FRED series.
EU-specific HICP and unemployment dashboard
A policy analyst builds an EU-only dashboard. econ_eurostat queries with the prc_hicp_aind, une_rt_a, and nama_10_gdp datasets, country EU27_2020,EA20 plus the individual 27 member states, give a single source of truth for the entire union. No need to assemble per-country CSV downloads.
How to connect this economic indicators MCP
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"economic-indicators": {
"url": "https://economic-indicators-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor, Windsurf, or Cline
Use the same URL and token in your MCP server settings panel. The server speaks standard MCP protocol over HTTP POST to /mcp.
Python (via requests)
import requests
response = requests.post(
"https://economic-indicators-mcp.apify.actor/mcp",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "econ_country_comparison",
"arguments": {
"countries": "USA,CHN,DEU",
"start_year": 2020,
"include_forecasts": False
}
},
"id": 1
}
)
result = response.json()
report = result["result"]["content"][0]["text"]
print(report)
JavaScript
const response = await fetch(
"https://economic-indicators-mcp.apify.actor/mcp",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "econ_us_fred_data",
arguments: {
mode: "observations",
series_ids: ["DFF", "UNRATE"],
start_date: "2023-01-01",
frequency: "m",
api_key: "YOUR_FRED_API_KEY"
}
},
id: 1
})
}
);
const data = await response.json();
const payload = JSON.parse(data.result.content[0].text);
console.log(`Got ${payload.total} observations`);
cURL
curl -X POST "https://economic-indicators-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "econ_country_comparison",
"arguments": { "countries": "USA,CHN,DEU", "start_year": 2020 }
},
"id": 1
}'
Environment variables
Five of the six sources need no key. One key is required (FRED), one is optional (BLS, raises rate limit), and one tunes the standby idle window:
| Variable | Required | Purpose |
|---|---|---|
FRED_API_KEY | Required for econ_us_fred_data | Free key from fred.stlouisfed.org/docs/api/api_key.html. Can also be passed per call as the api_key argument. Without it, the FRED tool returns a NO_API_KEY warning. |
BLS_API_KEY | Optional | Free key from bls.gov. When set, the BLS rate limit goes from 25 requests/day to 500 requests/day and the date-range cap expands. Can also be passed per call as api_key. |
STANDBY_IDLE_TIMEOUT_SECS | Optional | Standby idle-shutdown window in seconds (default 300, minimum 60). The instance exits after this idle period to release platform compute; the next request cold-starts a fresh one. |
World Bank, OECD, IMF, and Eurostat are keyless.
MCP tools

| Tool | Input | Price | What it returns |
|---|---|---|---|
econ_us_bls_data | preset (cpi/unemployment/employment/wages/ppi/custom), start_year, end_year, optional custom_series_ids, optional api_key | $0.05 | BLS time series with seriesId, seriesName, year, period, value; per-series counts; aggregated data array |
econ_us_fred_data | mode (search/observations/series), search_text or series_ids[], start_date, end_date, frequency (d/w/bw/m/q/sa/a), api_key | $0.05 | FRED series metadata, observations, or search hits |
econ_world_bank | indicator (preset) or custom_indicator, countries (ISO 2-letter CSV or "all"), year_from, year_to | $0.05 | World Bank indicator data with countryName, year, value, indicatorName |
econ_oecd_statistics | dataset (SDMX) or custom_dataset, filter_key, country (ISO alpha-3 joined with +), frequency (A/Q/M), start_period, end_period | $0.05 | OECD SDMX observations with countryName, period, value, indicatorName |
econ_imf_data | indicator (preset) or custom_indicator, countries (ISO alpha-3 CSV or "all"), start_year, end_year, include_forecasts | $0.05 | IMF WEO data with countryName, year, value, indicatorName; forecasts when toggled |
econ_eurostat | dataset (preset) or custom_dataset, country (EU 2-letter or aggregate), start_year, end_year | $0.05 | Eurostat dataset rows with countryName, year, value, indicatorName |
econ_country_comparison | countries (ISO 2-letter or 3-letter CSV), start_year, end_year, include_forecasts | $0.15 | Unified profile: summary table with latest GDP / growth / inflation / unemployment / debt / population per country, plus full time series per indicator. Queries World Bank + IMF in parallel. |
econ_list_sources | (none) | Free | Tool and source catalogue: 8 tools, 6 sources, coverage map (US-specific / global / OECD / EU). No upstream fetch, no charge |
Tool input reference
| Tool | Parameter | Type | Required | Description |
|---|---|---|---|---|
econ_us_bls_data | preset | enum | Yes (default cpi) | cpi, unemployment, employment, wages, ppi, or custom |
econ_us_bls_data | custom_series_ids | string | If preset=custom | Comma-separated BLS series IDs, e.g. CUUR0000SA0,LNS14000000 |
econ_us_bls_data | start_year / end_year | number | No | Defaults 2020, 2025 |
econ_us_bls_data | api_key | string | No | Optional BLS key for higher limits |
econ_us_fred_data | mode | enum | Yes | search (by keyword), observations (get data), series (metadata) |
econ_us_fred_data | search_text | string | If mode=search | Keyword, e.g. "federal funds rate" |
econ_us_fred_data | series_ids | string[] | If mode=observations or mode=series | FRED series IDs, e.g. ["GDP","UNRATE","DFF"] |
econ_us_fred_data | start_date / end_date | string | No | YYYY-MM-DD |
econ_us_fred_data | frequency | enum | No | Empty (native), d, w, bw, m, q, sa, a |
econ_us_fred_data | api_key | string | Yes (per call or env) | Free FRED key |
econ_us_fred_data | max_results | number | No | 1-1000, default 50 (search mode) |
econ_world_bank | indicator | enum | No | Preset (GDP, population, poverty, etc.) |
econ_world_bank | custom_indicator | string | No | Any World Bank indicator code, overrides preset |
econ_world_bank | countries | string | No | ISO 2-letter CSV or "all", default US,CN,DE,JP,GB |
econ_world_bank | year_from / year_to | number | No | From 1960 onwards |
econ_oecd_statistics | dataset | string | No | SDMX dataflow reference |
econ_oecd_statistics | custom_dataset | string | No | Custom OECD SDMX dataflow reference (overrides preset) |
econ_oecd_statistics | filter_key | string | No | SDMX dimension filter key, default all |
econ_oecd_statistics | country | string | No | ISO alpha-3 codes joined with +, e.g. USA+GBR+DEU |
econ_oecd_statistics | frequency | enum | No | A, Q, M |
econ_oecd_statistics | start_period / end_period | string | No | e.g. 2020, 2020-Q1, 2020-01 |
econ_imf_data | indicator | enum | No | NGDP_RPCH, NGDPD, PPPGDP, NGDPDPC, PCPIPCH, LUR, GGXWDG_NGDP, BCA_NGDPD, GGR_NGDP, GGX_NGDP, TM_RPCH, TX_RPCH, LP, PPPPC, PPPSH |
econ_imf_data | custom_indicator | string | No | Any IMF WEO indicator code |
econ_imf_data | countries | string | No | ISO alpha-3 CSV or "all", default USA |
econ_imf_data | include_forecasts | boolean | No | Default false. True adds IMF staff projections for future years |
econ_eurostat | dataset | enum | No | nama_10_gdp, une_rt_a, prc_hicp_aind, demo_pjan, ext_lt_maineu |
econ_eurostat | custom_dataset | string | No | Any Eurostat dataset code |
econ_eurostat | country | string | No | EU 2-letter codes (DE, FR, IT) or aggregates (EU27_2020, EA20) |
econ_country_comparison | countries | string | Yes | ISO 2-letter or 3-letter CSV, the tool handles both |
econ_country_comparison | start_year / end_year | number | No | Default start 2020, end = current year |
econ_country_comparison | include_forecasts | boolean | No | Default false |
Output example
econ_country_comparison called with countries: "USA,CHN,DEU", start_year: 2020:
{
"countries": ["USA", "CHN", "DEU"],
"period": { "from": 2020, "to": 2025, "includesForecasts": false },
"sources": ["World Bank", "IMF WEO"],
"summary": [
{
"country": "United States",
"code": "USA",
"latestGdp": 27360935000000,
"latestGrowth": 2.821,
"latestInflation": 4.116,
"latestUnemployment": 3.638,
"latestDebtToGdp": 122.143,
"latestPopulation": 334914895
},
{
"country": "China",
"code": "CHN",
"latestGdp": 17794782000000,
"latestGrowth": 5.245,
"latestInflation": 0.232,
"latestUnemployment": 5.2,
"latestDebtToGdp": 83.609,
"latestPopulation": 1410710000
},
{
"country": "Germany",
"code": "DEU",
"latestGdp": 4456081000000,
"latestGrowth": -0.305,
"latestInflation": 5.952,
"latestUnemployment": 3.0,
"latestDebtToGdp": 64.275,
"latestPopulation": 84482267
}
],
"profiles": {
"United States": {
"country": "United States",
"code": "USA",
"indicators": {
"gdp_nominal": {
"name": "GDP (current US$)",
"unit": "USD",
"values": [
{ "year": 2020, "value": 21354103000000 },
{ "year": 2021, "value": 23681170000000 },
{ "year": 2022, "value": 26006893000000 },
{ "year": 2023, "value": 27360935000000 }
],
"latest": { "year": 2023, "value": 27360935000000 }
},
"gdp_growth_pct": {
"name": "Gross domestic product, constant prices (Percent change)",
"unit": "Percent change",
"values": [
{ "year": 2020, "value": -2.215 },
{ "year": 2021, "value": 5.799 },
{ "year": 2022, "value": 1.940 },
{ "year": 2023, "value": 2.541 },
{ "year": 2024, "value": 2.821 }
],
"latest": { "year": 2024, "value": 2.821 }
},
"inflation_pct": {
"name": "Inflation, average consumer prices (Percent change)",
"unit": "Percent change",
"values": [
{ "year": 2020, "value": 1.234 },
{ "year": 2021, "value": 4.698 },
{ "year": 2022, "value": 8.003 },
{ "year": 2023, "value": 4.116 }
],
"latest": { "year": 2023, "value": 4.116 }
},
"unemployment_pct": {
"name": "Unemployment rate (Percent)",
"unit": "Percent",
"values": [
{ "year": 2020, "value": 8.052 },
{ "year": 2021, "value": 5.349 },
{ "year": 2022, "value": 3.650 },
{ "year": 2023, "value": 3.638 }
],
"latest": { "year": 2023, "value": 3.638 }
},
"govt_debt_gdp_pct": {
"name": "General government gross debt (Percent of GDP)",
"unit": "Percent of GDP",
"values": [
{ "year": 2020, "value": 133.526 },
{ "year": 2021, "value": 126.397 },
{ "year": 2022, "value": 121.317 },
{ "year": 2023, "value": 122.143 }
],
"latest": { "year": 2023, "value": 122.143 }
},
"population": {
"name": "Population, total",
"unit": "",
"values": [
{ "year": 2020, "value": 331526933 },
{ "year": 2021, "value": 332048977 },
{ "year": 2022, "value": 333271411 },
{ "year": 2023, "value": 334914895 }
],
"latest": { "year": 2023, "value": 334914895 }
}
}
}
}
}
The profiles block has one entry per country with the same six-indicator structure. The example shows United States only for brevity; China and Germany follow the same shape.
Output fields
Top-level (every paid tool)
| Field | Type | Description |
|---|---|---|
total | number | Count of data points returned |
countries | string[] | Country names present in the response |
data | object[] | The harmonized rows from the underlying source actor |
econ_country_comparison specific
| Field | Type | Description |
|---|---|---|
period | object | from, to, includesForecasts |
sources | string[] | Upstream providers actually queried (currently World Bank, IMF WEO) |
summary | object[] | One row per country with latest GDP, growth, inflation, unemployment, debt-to-GDP, population |
profiles | object | Per-country object keyed by country name, with indicators[] time series and latest value per indicator |
Per-source notes
| Tool | Notable fields |
|---|---|
econ_us_bls_data | seriesCount, series[] with seriesId, seriesName, dataPoints |
econ_us_fred_data | mode, data (search results, observations, or metadata depending on mode) |
econ_world_bank / econ_oecd_statistics / econ_imf_data / econ_eurostat | indicator name, countries[], data[] time series |
econ_list_sources | tools[], indicatorCoverage{} |
How much does it cost to query economic indicators?
Economic Indicators MCP uses pay-per-event pricing: $0.05 per single-source tool call and $0.15 for the composite econ_country_comparison. Platform compute is included. econ_list_sources is free.
| Scenario | Tool calls | Cost per call | Total cost |
|---|---|---|---|
| List sources to pick the right tool | 1 free | $0 | $0 |
| Single CPI pull from BLS | 1 | $0.05 | $0.05 |
| FRED series discovery + observations (2 calls) | 2 | $0.05 | $0.10 |
| Single-country IMF query with forecasts | 1 | $0.05 | $0.05 |
| Unified comparison across 5 countries | 1 | $0.15 | $0.15 |
| Monthly EM macro brief, 12 countries comparison + 3 single-source supplements | 4 | mixed | $0.30 |
| 200 country comparisons over a month (scheduled dashboard refresh) | 200 | $0.15 | $30.00 |
You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached, returning a structured error your pipeline can handle gracefully.
Apify's free tier includes $5 of monthly platform credits: enough for roughly 33 composite comparison calls or 100 single-source calls before you need to add payment.
How it works
- Standby HTTP server. The MCP server runs in Apify Standby mode on
https://economic-indicators-mcp.apify.actor/mcp. POST a JSON-RPCtools/callpayload, get back a structured response. - Six sibling actors. Each MCP tool wraps one upstream source via a dedicated Apify actor (
bls-economic-data,fred-economic-data,world-bank-indicators,oecd-statistics-search,imf-economic-data,eurostat-eu-statistics). The MCP layer normalizes the response and surfaces useful aggregates (total,countries,series). - Composite fan-out.
econ_country_comparisoncalls World Bank twice (nominal GDP, population) and IMF four times (growth %, inflation %, debt/GDP %, unemployment %) in parallel viaPromise.all. Results are grouped by country, sorted by year, and thelatestvalue is surfaced per indicator. - Idle-shutdown. A 30-second interval checks
lastRequestAtand exits the instance afterSTANDBY_IDLE_TIMEOUT_SECS(default 300s) of inactivity. The next request cold-starts a fresh instance, so compute is not billed during quiet periods. - Per-tool PPE charge. Every paid tool calls
Actor.charge({ eventName })before running the upstream actor, so a customer is billed once per tool invocation regardless of how many records the upstream returns.
Tips for best results
-
Use ISO codes consistently across a session. ISO 2-letter for World Bank, ISO 3-letter for IMF and OECD. For the composite tool, either works.
-
Start with
econ_list_sourcesfrom a fresh agent. It is free and returns the full tool catalogue plus the coverage map (US-specific / global / OECD / EU). The planner picks the right tool on the first try. -
For FRED, search before observations. Unless you already know the series ID, call
econ_us_fred_datawithmode: "search"and a keyword first, then call again withmode: "observations"and the resolved IDs. Two cheap calls beats guessing. -
For OECD, use the SDMX dataflow reference exactly as shown. OECD dataset IDs look like
OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE1,1.0. Browse the picker at data-explorer.oecd.org to copy the right one. Wrong references return empty results. -
Toggle
include_forecasts=truefor forward-looking questions. Default is historical only. The IMF WEO database includes staff projections for future years; the flag is what unlocks them. -
Use country aggregates in Eurostat. Country code
EU27_2020returns the EU27 aggregate as a single row;EA20returns the Euro Area. Pass these alongside individual member states for a single-call comparison. -
Set spending limits for scheduled runs. When pointing a daily scheduler at
econ_country_comparison, setmaxTotalChargeUsdon the Apify run to cap exposure. The MCP returns a structured error when the limit is reached.
Combine with other Apify actors
| Actor | How to combine |
|---|---|
| BLS Economic Data | Call directly if you need full BLS dataset output outside the MCP normalization layer |
| FRED Economic Data | Call directly for FRED-only workflows or batch series pulls outside an MCP session |
| World Bank Indicators | Call directly for bulk World Bank indicator pulls across many countries |
| OECD Statistics Search | Call directly for advanced SDMX dataflow exploration |
| IMF Economic Data | Call directly for IMF WEO bulk extraction or per-country forecast tables |
| Eurostat EU Statistics | Call directly for full Eurostat dataset extraction with custom dataset codes |
| Company Deep Research | Pair macro context from this MCP with company-level intelligence for sovereign-corporate cross-analysis |
Limitations
- FRED requires a free API key. Without
FRED_API_KEYset (env var or per-callapi_keyargument),econ_us_fred_datareturns aNO_API_KEYwarning instead of data. Get a key at fred.stlouisfed.org/docs/api/api_key.html, it is free and arrives in minutes. - BLS rate limit without a key is 25 requests per day. With a free BLS key, the limit goes to 500 requests per day plus a longer date-range cap. Set
BLS_API_KEYor passapi_keyper call. - OECD requires SDMX dataflow references. OECD dataset IDs are not human-friendly (
OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE1,1.0). Browse data-explorer.oecd.org to find the right reference. Customcustom_datasetoverrides any preset. econ_country_comparisonuses World Bank + IMF only. OECD and Eurostat are not part of the composite fan-out. Use the dedicated tools for OECD or EU-specific data.- Forecasts come from IMF only.
include_forecasts=truereturns IMF staff projections. World Bank, BLS, FRED, OECD, and Eurostat are historical/recent-actuals only. - Country-code mapping covers 45 major economies. The composite tool's internal ISO 2-to-3 (and reverse) mapping handles the most-requested codes. Less-common codes pass through unchanged, so passing a valid ISO code in the correct format for the underlying source still works.
- Upstream actor timeout is 120 seconds. If a source is slow, it times out and returns an empty array. The MCP response still returns successfully with whatever sources delivered; check the
totalandcountriesfields. - Data freshness depends on the upstream agency. BLS, FRED, Eurostat, and OECD update on their own release calendars. IMF WEO updates twice a year (April, October). World Bank annual indicators update once a year.
Integrations
- Apify API, trigger MCP tool calls programmatically from a research pipeline or analyst workflow
- Webhooks, push failure or completion alerts to Slack, email, or any HTTP endpoint
- Zapier, connect macro data refreshes to Airtable, Google Sheets, or Notion macro dashboards
- Make, build country-monitoring scenarios that auto-update when new data lands
- LangChain / LlamaIndex, embed this MCP as a tool in LLM agent pipelines so the agent can ground macro claims in official statistics
Troubleshooting
econ_us_fred_data returns { "warning": "No FRED API key provided" }. Either set the FRED_API_KEY env var on the actor, or pass api_key in every FRED tool call. The free FRED key is issued in minutes at fred.stlouisfed.org/docs/api/api_key.html.
econ_oecd_statistics returns 0 data points. The OECD dataset reference is probably wrong. SDMX dataflow IDs look like OECD.SDD.NAD,DSD_NAMAIN10@DF_TABLE1,1.0. Find the correct reference for the indicator you want at data-explorer.oecd.org and pass it as custom_dataset.
econ_country_comparison returns a country in the summary but the indicators block is sparse. This usually means one of the underlying source actors returned the country name but no value rows for the requested years. Try expanding the start_year / end_year window or check the country code is recognized by both World Bank (ISO 2-letter internally) and IMF (ISO 3-letter internally).
A country code is rejected. ISO 2-letter and 3-letter both work for the composite tool. The single-source tools require their native format: World Bank wants 2-letter, IMF and OECD want 3-letter, Eurostat wants 2-letter EU codes. The error message will name the source that rejected the code.
Tool returns "error": true, "message": "Spending limit reached". The Apify run hit maxTotalChargeUsd. Raise the limit in your run configuration, or add platform credits.
Responsible use
- All data accessed by this server comes from publicly available official statistics: U.S. BLS, U.S. Federal Reserve (FRED), World Bank, OECD, IMF World Economic Outlook, and Eurostat. Each agency publishes data under its own terms; check the source if you are republishing.
- Cite the underlying source agency when republishing values. The tool responses include the source name, indicator code, and year so attribution is straightforward.
- Comply with applicable rate limits and terms of use for each upstream API. The BLS and FRED keys are issued for free; respect their daily request limits.
- For guidance on web scraping and data use legality, see Apify's guide.
FAQ
How fresh is the data returned by Economic Indicators MCP? Freshness depends on the upstream agency. FRED and Eurostat update daily to monthly depending on the series. BLS releases follow the U.S. statistical calendar (CPI monthly, employment monthly). OECD updates on the dataset's own calendar. IMF WEO publishes twice a year (April and October). World Bank annual indicators update once a year, typically with a 6-12 month lag. Each tool response includes the most recent observation date the source provided.
Can I get forecasts and projections?
Yes, from IMF. Pass include_forecasts=true to econ_imf_data or econ_country_comparison and the response will include IMF staff projections for future years. BLS, FRED, World Bank, OECD, and Eurostat are historical or recent-actuals only.
Should I pass ISO 2-letter or 3-letter country codes?
For the single-source tools, match the source's native format: World Bank uses ISO 2-letter (US,CN,DE), IMF and OECD use ISO 3-letter (USA,CHN,DEU), Eurostat uses EU 2-letter (DE,FR,IT) plus aggregates (EU27_2020, EA20). For econ_country_comparison, either ISO 2-letter or 3-letter works because the tool maps internally for 45 major economies.
Why does FRED require a key when the other sources do not?
FRED is the Federal Reserve's data API and applies a per-user rate limit tied to a free key. Sign up at fred.stlouisfed.org/docs/api/api_key.html, get a key in minutes, then either set FRED_API_KEY on the actor or pass it as api_key per tool call. The other five sources (BLS optional, World Bank, OECD, IMF, Eurostat) work without a key.
How is this different from Bloomberg Terminal or Refinitiv? Bloomberg and Refinitiv are end-user terminal products priced for sell-side desks (thousands of dollars per seat per month) and built for human analysts. Economic Indicators MCP is agent-native infrastructure: an MCP endpoint priced per call ($0.05 single source, $0.15 composite) that returns structured JSON for LLM agents and automated pipelines. The two serve different jobs.
How is this different from asking ChatGPT or Claude for macro data? LLMs without tool access guess from training data and cannot tell you the latest reading. They also hallucinate numbers and cannot cite a release date. Connecting an agent to this MCP replaces "U.S. inflation in 2024 was around 3%" with "U.S. CPI, BLS series CUUR0000SA0, latest reading X.X% YoY for {month}", grounded in the actual release.
Can I query EU-specific indicators?
Yes. econ_eurostat covers EU GDP, unemployment, HICP inflation, population, and trade. Use the preset datasets (nama_10_gdp, une_rt_a, prc_hicp_aind, demo_pjan, ext_lt_maineu) or pass any Eurostat dataset code via custom_dataset. Country codes accept individual EU member states (DE, FR, IT) and aggregates (EU27_2020 for the EU27, EA20 for the Euro Area).
Is the country-comparison tool's output suitable for direct charting?
Yes. Each indicator returns a values[] array sorted by year with {year, value} pairs, plus a latest value for headline display. The structure maps cleanly to chart libraries without further transformation. The summary table is suitable for direct table rendering.
Can I schedule this MCP to refresh a dashboard daily? Yes. Trigger the actor via the Apify Scheduler on the cadence you need (daily, weekly, monthly). Pair with webhooks to push the result into Sheets, Notion, Airtable, or your own database. Idle-shutdown means the standby instance does not bill compute between scheduled triggers.
Is it legal to use this data in commercial research? The underlying sources are official public statistics from government and intergovernmental agencies. Republishing values typically requires attribution to the source agency. Each agency has its own terms; check the source before commercial redistribution. See Apify's guide on web scraping legality for broader context.
Help us improve
If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.
Related actors
AI Cold Email Writer — $0.01/Email, Zero LLM Markup
Generates personalized cold emails from enriched lead data using your own OpenAI or Anthropic key. Subject line, body, CTA, and optional follow-up sequence — $0.01/email, zero LLM markup.
AI Outreach Personalizer — Emails with Your LLM Key
Generate personalized cold emails using your own OpenAI or Anthropic API key. Subject lines, opening lines, full bodies — tailored to each lead's role, company, and signals. $0.01/lead compute + your LLM costs. Zero AI markup.
Bulk Email Verifier — MX, SMTP & Disposable Detection at Scale
Verify email deliverability in bulk — MX records, SMTP mailbox checks, disposable detection (55K+ domains), role-based flagging, catch-all detection, domain health scoring (SPF/DKIM/DMARC), and confidence scores. $0.005/email, no subscription.
CFPB Complaint Search — By Company, Product & State
Search the CFPB consumer complaint database with 5M+ complaints. Filter by company, product, state, date range, and keyword. Extract complaint details, company responses, and consumer narratives. Free US government data, no API key required.
Ready to try Economic Indicators MCP Server?
This actor is coming soon to the Apify Store.
Coming soon