Search FRED series
Changed onFull-text search across 800,000+ FRED economic series. Returns series metadata including series_id, title, frequency, units and popularity.
Fetch a result with GET /api/v1/fred/series/{series_id}, which accepts any series_id in the FRED catalogue. The /macro/{country}/{section} route is a different thing: it serves about 450 curated series and takes a section name, not a series_id, so it cannot fetch an arbitrary search result.
TITLES ARE NOT UNIQUE - read units before choosing. 'Real Residential Property Prices for France' is the title of BOTH QFRR628BIS (Index 2010=100, the price level) and QFRR368BIS (Percent per Annum, the growth rate). Picking by title alone returns the wrong one about half the time, and the response looks entirely valid either way. popularity is a reasonable tiebreak, not a guarantee.
Request
- Base URL: https://sugra.ai
- URL: https://sugra.ai/api/v1/macro/search
- Auth: API key in header x-api-key
Query parameters
Free-text search query.
Maximum number of records to return.
Pagination offset (zero-indexed).
Order-by field.
Response
FRED economic series matching the query, each with series_id, title, frequency, units, popularity and whether it is in the curated catalog. Fetch any of them by series_id from /api/v1/fred/series/{series_id}.
Example response
{
"meta": {
"endpoint": "/api/v1/fred/us/cpi",
"data_time": "2026-04-16T14:30:00Z",
"response_time": "2026-04-16T14:30:12Z",
"provider": "Sugra API v1.0.1",
"data_age_days": 8.532,
"source": "sugra_crypto",
"attribution": "Short interest and Reg SHO daily short volume data is owned by and sourced from FINRA (Financial Industry Regulatory Authority).",
"fallback_chain": [
"sugra_crypto",
"sugra_finance"
],
"stale_since": "2026-09-08T12:00:00Z",
"period": "2026-Q1",
"notes": "the UKMTO report behind these counts is dated 2026-08-21 and is 11 days old"
}
}Changes
- breaking
added
subschema #2to the response bodyoneOflist for the response status - breaking
the response's body type changed from
objectto no type for status - breaking
removed the required property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- breaking
- info
added the optional property
/to the response with the status
- info