Unified Search
The cross-source meta-tool. Pass one entity — a ticker, company name, CUSIP, SEC CIK, congressional member, or federal recipient — and unified_search fans out across every applicable dataset in parallel, returning a single envelope grouped by source. It's how you get the full picture of an entity without calling a dozen tools yourself.
GET /v1/unified-searchHow it works
Give it at least one identifier. Each identifier knows which datasets it applies to and queries only those — a ticker fans out to 13 collections, a bioguide_id to the 2 congressional ones, a recipient_uei to federal contracts. Results come back grouped under results_by_source, each with its own count and pagination flag.
Identifiers & controls
| ticker | Stock symbol, e.g. NVDA. Fans out to all 13 equity-linked datasets. |
| company_name | Issuer name (e.g. Lockheed Martin) — resolved to a ticker / CIK. |
| company_cik | SEC CIK (10-digit, zero-padded). Fans out to the 8 SEC datasets. |
| cusip | 9-character CUSIP. Fans out to institutional holdings + fund holdings. |
| bioguide_id | Congressional member ID, e.g. P000197. Fans out to the 2 congressional datasets. |
| recipient_uei | USAspending recipient UEI. Fans out to federal contracts. |
| since / until | ISO dates (YYYY-MM-DD) applied to each dataset's primary date field. |
| per_source_limit | Max records returned per source. Default 5, max 50. (limit is an alias.) |
| sources | Optional whitelist of source names — restrict the fan-out to specific datasets. |
What it returns
A single envelope. Top-level fields:
- Query —
query(the resolved identifiers) - Results —
results_by_source, a map of{ <dataset>: { count, has_more, results[] } }— one entry per dataset that had a hit - Totals —
total_count,sources_queried,sources_with_results
Example request
curl "https://api.keyvex.com/v1/unified-search?ticker=NVDA" \
-H "x-api-key: YOUR_KEY"
Response
{
"query": { "ticker": "NVDA" },
"results_by_source": {
"insider_trades": { "count": 5, "has_more": true, "results": [ /* Form 4 rows */ ] },
"congressional_trades": { "count": 5, "has_more": true, "results": [ /* member trades */ ] },
"institutional_holdings": { "count": 5, "has_more": true, "results": [ /* 13F positions */ ] },
"company_profile": { "count": 1, "has_more": false, "results": [ /* identity card */ ] },
"material_events": { "count": 5, "has_more": true, "results": [ /* 8-Ks */ ] },
"xbrl_fundamentals": { "count": 5, "has_more": true, "results": [ ... ] },
"activist_ownership": { "count": 3, "has_more": false, "results": [ ... ] }
/* + planned_insider_sales, proxy_filings, tender_offers,
registration_statements, nport_holdings, initial_ownership_baselines */
},
"total_count": 54,
"sources_queried": 13,
"sources_with_results": 13
}
Example questions you can answer
- "Everything KeyVex knows about
NVDAin one call." - "Give me the full picture of a company — insider trades, 13F holders, contracts, and 8-Ks together."
- "One lookup for a member of Congress — their trades, profile, and financial disclosures at once."
Related datasets
Hand any AI your key + the OpenAPI spec and it can fan out across every dataset in one call. Free key = full data, 60 requests/day.
Get a free key OpenAPI spec → REST docs →