search_filing

Find a phrase across one filing, with the section each hit came from.

What it does

Literal, case-insensitive search across both lanes of one filing -- by default the latest annual report. Returns at most 10 hits, each about 400 characters of context and each tagged with the section_id it came from, so you can call read_filing_section and read the whole section rather than reasoning from a snippet. total_matches reports how many occurrences there were, so a returned list of ten is never mistaken for the complete set. A narrative hit carries the confidence and notice of the section it came from.

search_filing is on the free tier. A free account gets 12 agent calls per 16 hours and this is one of them; Pro is uncounted. The website's own screening allowance is counted separately.

Arguments, returns and a worked call

Everything below is generated from the same registry entry the MCP server and /openapi.json are generated from, so this page cannot name an argument that does not exist. The two examples are the same call, once over each transport.

search_filing

Free

Literal, case-insensitive search across both lanes of one filing -- by default the latest annual report. Returns at most 10 hits, each about 400 characters of context and each tagged with the `section_id` it came from, so you can call read_filing_section and read the whole section rather than reasoning from a snippet. `total_matches` reports how many occurrences there were, so a returned list of ten is never mistaken for the complete set. A narrative hit carries the `confidence` and `notice` of the section it came from.

Arguments

symbol string, required — The ticker as Crush The Market spells it.

query string, required — The phrase to find, at least 3 characters. Matched literally and case-insensitively.

accession string, optional — A specific filing. Defaults to the latest annual report.

lane string, optional — Which lane to search: notes, narrative, or both. Defaults to both.

Returns

symbol, filing, query, lane, sections_searched, total_matches, count, hits, note, error, as_of, source, disclaimer

curl — Both lanes of Apple's latest 10-K.
> curl -s https://crushthemarket.com/api/v1/search_filing \  -H "Authorization: Bearer $CTM_KEY" \  -H 'Content-Type: application/json' \  -d '{"symbol":"AAPL","query":"effective tax rate"}'
MCP tools/call — Both lanes of Apple's latest 10-K.
{  "jsonrpc": "2.0",  "id": 1,  "method": "tools/call",  "params": {    "name": "search_filing",    "arguments": {      "symbol": "AAPL",      "query": "effective tax rate"    }  }}

Can answer

bad_request — `symbol` is missing, `query` is shorter than three characters, or `lane` is not one of notes/narrative/both.

no_sec_filer — No SEC filer is mapped to the symbol.

edgar_unavailable — Neither lane could be read from EDGAR.

Calling search_filing

  1. 1.Register free — an email address, no card — then create a key under API Keys on your account page. Your email address has to be verified first, and the key is shown once.
  2. 2.Using a chat client that speaks MCP? The MCP guide is one paste. Anything else takes bearer auth, the error codes and the limits from the REST guide.
  3. 3.Make the call above with your own key in it.

Every successful response carries as_of, source, a quota block saying how much of the allowance is left, and the same disclaimer this page ends on.

More for agents

AgentsWhat exists, and the three-step quickstart.
MCPConnect Claude Code or claude.ai.
REST APIBearer auth, endpoints, errors and limits.
ToolsOne page per tool: arguments, a worked call, what it can fail with.

Data, not advice. Do your own diligence.

Noticed an error with something on our site?

Data, not advice. Do your own diligence.

We Use Cookies