Search & Browse
Company search, exchanges, sectors, and curated subsets. All endpoints live under https://api.edgar.tools/v1.
GET /v1/search
Tier: Free
Search for companies by name, ticker, or CIK.
| Parameter | Type | Description |
|---|---|---|
q | string (required) | Search query (company name, ticker, or CIK) |
curl "https://api.edgar.tools/v1/search?q=Apple" \
-H "Authorization: Bearer etk_your_key_here"{
"entities": [
{
"cik": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"entity_type": "company",
"sic_description": "Electronic Computers",
"state_of_incorporation": "CA",
"fiscal_year_end": "0930"
}
],
"total": 1,
"query": "Apple"
}GET /v1/search/full-text
Tier: Professional+
Full-text search across every SEC filing since 2001 — searches inside the filing body, not just company metadata. Backed by SEC EDGAR's EFTS index.
You must provide at least one of q, forms, ciks, or locations.
Query syntax
The q parameter supports four operators:
| Syntax | Example | Meaning |
|---|---|---|
| Phrase quotes | "material weakness" | Exact phrase match |
| Boolean | revenue OR earnings, gas NOT renewable | OR / NOT (AND is implicit between bare terms) |
| Proximity | NEAR(revenue, decline, 5) | Two terms within N tokens of each other |
| Suffix wildcard | gas* | Prefix-match — matches gas, gases, gasoline, etc. |
Form codes are case-sensitive when used as terms (10-K, not 10-k).
Parameters
| Parameter | Type | Description |
|---|---|---|
q | string | Search query. Required if no forms/ciks/locations provided |
forms | string (CSV) | Filter by SEC form types (e.g. 10-K,8-K) |
ciks | string (CSV) | Filter by company CIKs (zero-padding optional) |
date_from | string (YYYY-MM-DD) | Start date (inclusive) |
date_to | string (YYYY-MM-DD) | End date (inclusive) |
locations | string (CSV) | State/country codes (e.g. CA,NY,UK) |
location_type | string | located (HQ) or incorporated — only meaningful with locations |
items | string (CSV) | 8-K item codes (e.g. 2.02,5.02) — only meaningful with forms=8-K |
from | int (default 0) | Pagination offset. Bounded by your tier's result cap |
size | int (default 20, max 100) | Results per page |
Example
# Find every 10-K filed since 2024 mentioning "material weakness"
curl "https://api.edgar.tools/v1/search/full-text?q=%22material+weakness%22&forms=10-K&date_from=2024-01-01&size=5" \
-H "Authorization: Bearer etk_your_key_here"Response
{
"results": [
{
"id": "0000320193-24-000123:filing.htm",
"score": 12.4,
"accession": "0000320193-24-000123",
"form": "10-K",
"root_forms": ["10-K"],
"file_type": "10-K",
"file_date": "2024-11-01",
"period_ending": "2024-09-28",
"filename": "filing.htm",
"url": "https://www.sec.gov/Archives/edgar/data/320193/...",
"entities": [
{ "cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL" }
],
"ciks": ["0000320193"],
"biz_states": ["CA"],
"biz_locations": ["CA"],
"inc_states": ["CA"],
"sics": ["3571"],
"items": [],
"is_primary": true,
"is_amendment": false
}
],
"total": 142,
"total_relation": "eq",
"from": 0,
"size": 5,
"tier": "professional",
"tier_cap": 500,
"tier_capped": false,
"facets": {
"forms": [{ "key": "10-K", "doc_count": 142 }],
"entities": [{ "cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL", "count": 3 }],
"sics": [{ "key": "3571", "doc_count": 35 }],
"biz_states": [{ "key": "CA", "doc_count": 28 }]
},
"query": {
"q": "\"material weakness\"",
"forms": ["10-K"],
"ciks": [],
"date_from": "2024-01-01",
"date_to": null,
"location_codes": [],
"location_type": null,
"items": []
}
}Results are grouped by filing
EFTS returns one hit per matching document, so a filing that mentions your query in several exhibits would appear several times. The API collapses these into one entry per filing — the results array carries one row per accession, with the best-matching document chosen for the snippet and the matched filenames unioned.
total, however, is a document count, not a filing count: a filing that matched in N documents contributes N to total. The same applies to facets[].doc_count. So total will typically exceed the number of distinct filings you can page through — use it as a relevance signal, not as the count of filings in the result set.
Tier-based result caps
You can paginate up to your tier's ceiling. Past that, tier_capped flips to true and the API returns the last reachable page so you can prompt for upgrade.
| Tier | Max paginated results (from + size) |
|---|---|
| Professional | 500 |
| Analyst | 1,000 |
| Enterprise | 10,000 (EFTS hard cap) |
Free tier returns 403 insufficient_tier at the route — full-text search is Pro+.
Errors
| Status | Code | Cause |
|---|---|---|
| 400 | missing_query | None of q / forms / ciks / locations provided |
| 400 | invalid_param | Malformed date_from / date_to / from / size / location_type |
| 400 | invalid_query | EFTS rejected the query syntax — usually a malformed NEAR() or unbalanced quotes |
| 403 | insufficient_tier | Free tier — upgrade to Professional or above |
| 429 | upstream_rate_limited | SEC EDGAR rate-limited us; retry after a short pause |
| 502 | upstream_error | SEC EDGAR returned 5xx or the network call failed |
GET /v1/companies
Tier: Free
List companies with optional sector and exchange filters.
| Parameter | Type | Description |
|---|---|---|
page | integer (default 1) | Page number |
limit | integer (default 20, max 100) | Results per page |
sector | string | Filter by sector code |
exchange | string | Filter by exchange code (e.g. NASDAQ, NYSE) |
curl "https://api.edgar.tools/v1/companies?limit=10&exchange=NASDAQ" \
-H "Authorization: Bearer etk_your_key_here"{
"companies": [
{
"cik": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"sic_description": "Electronic Computers"
}
],
"pagination": { "page": 1, "limit": 20, "total": 10, "has_more": false },
"filters": { "sector": null, "exchange": "NASDAQ" }
}GET /v1/companies/{cik}
Tier: Free
Get detailed information about a specific company by CIK or ticker.
| Parameter | Type | Description |
|---|---|---|
cik | string (path) | Company CIK number or ticker symbol |
curl "https://api.edgar.tools/v1/companies/AAPL" \
-H "Authorization: Bearer etk_your_key_here"{
"company": {
"cik": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"entity_type": "company",
"sic_description": "Electronic Computers",
"state_of_incorporation": "CA",
"fiscal_year_end": "0930"
}
}GET /v1/companies/{cik}/filings
Tier: Free
Get filings for a specific company with optional form type filter.
| Parameter | Type | Description |
|---|---|---|
cik | string (path) | Company CIK number |
page | integer (default 1) | Page number |
limit | integer (default 20, max 100) | Results per page |
form_type | string | Filter by form type (e.g. 10-K, 8-K) |
curl "https://api.edgar.tools/v1/companies/0000320193/filings?form_type=10-K&limit=5" \
-H "Authorization: Bearer etk_your_key_here"{
"filings": [
{
"accession_number": "0001628280-24-123456",
"form": "10-K",
"filing_date": "2024-03-15",
"acceptance_datetime": "2024-03-15T16:30:00Z",
"description": "Annual Report",
"size": 1024000,
"items": ["1.01", "2.02"]
}
],
"pagination": { "page": 1, "limit": 20, "total": 1, "has_more": false },
"filters": { "form_type": "10-K" },
"company_cik": "0000320193"
}GET /v1/subsets
Tier: Professional
Get available company subsets — curated collections like S&P 500 or Fama-French industry buckets.
curl "https://api.edgar.tools/v1/subsets" \
-H "Authorization: Bearer etk_your_key_here"{
"subsets": [
{
"name": "sp500",
"display_name": "S&P 500",
"description": "Standard & Poor's 500 index constituents",
"company_count": 503,
"tier_required": "professional",
"tags": ["index", "large-cap"]
}
],
"user_tier": "professional"
}GET /v1/subsets/{subset_name}
Tier: Professional
Get companies in a specific subset.
| Parameter | Type | Description |
|---|---|---|
subset_name | string (path) | Subset identifier (e.g. sp500) |
curl "https://api.edgar.tools/v1/subsets/sp500" \
-H "Authorization: Bearer etk_your_key_here"{
"subset_name": "sp500",
"companies": [
{
"cik": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"sic_description": "Electronic Computers"
}
],
"total": 503
}GET /v1/exchanges
Tier: Professional
Get the list of available stock exchanges.
curl "https://api.edgar.tools/v1/exchanges" \
-H "Authorization: Bearer etk_your_key_here"{
"exchanges": [
{ "code": "NASDAQ", "name": "NASDAQ", "country": "US" },
{ "code": "NYSE", "name": "New York Stock Exchange", "country": "US" },
{ "code": "AMEX", "name": "American Stock Exchange", "country": "US" }
],
"total": 3
}GET /v1/exchanges/{exchange}/companies
Tier: Professional
Get companies listed on a specific exchange.
| Parameter | Type | Description |
|---|---|---|
exchange | string (path) | Exchange code (e.g. NASDAQ) |
limit | integer (default 20, max 100) | Max results |
curl "https://api.edgar.tools/v1/exchanges/NASDAQ/companies?limit=10" \
-H "Authorization: Bearer etk_your_key_here"{
"exchange": "NASDAQ",
"companies": [
{
"cik": "0000320193",
"name": "Apple Inc.",
"ticker": "AAPL",
"sic_description": "Electronic Computers"
}
],
"total": 50,
"limit": 20
}GET /v1/sectors
Tier: Professional
Get the list of available industry sectors.
curl "https://api.edgar.tools/v1/sectors" \
-H "Authorization: Bearer etk_your_key_here"{
"sectors": [
{ "code": "technology", "name": "Technology", "description": "Software, hardware, and tech services" },
{ "code": "healthcare", "name": "Healthcare", "description": "Pharmaceuticals, biotechnology, and medical devices" }
],
"total": 11
}