Cross-source

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.

EndpointGET /v1/unified-search
Fans out toup to 20 collections per query
Authx-api-key, paid plans only (Basic and up)

How 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

tickerStock symbol, e.g. NVDA. Fans out to all 13 equity-linked datasets.
company_nameIssuer name (e.g. Lockheed Martin), resolved to a ticker / CIK.
company_cikSEC CIK (10-digit, zero-padded). Fans out to the 8 SEC datasets.
cusip9-character CUSIP. Fans out to institutional holdings + fund holdings.
bioguide_idCongressional member ID, e.g. P000197. Fans out to the 2 congressional datasets.
recipient_ueiUSAspending recipient UEI. Fans out to federal contracts.
since / untilISO dates (YYYY-MM-DD) applied to each dataset's primary date field.
per_source_limitMax records returned per source. Default 5, max 50. (limit is an alias.)
sourcesOptional whitelist of source names, restrict the fan-out to specific datasets.

Live from the data

Loading the latest numbers…

What it returns

A single envelope. Top-level fields:

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

Related datasets

Run a unified search from your AI

Hand any AI your key + the OpenAPI spec and it can fan out across every dataset in one call. Paid plans only (Basic and up): a free key does not include this dataset.

See plans OpenAPI spec → REST docs →
← All 60+ datasets