Skip to content
/api/v1/scrapping/form-10

Scrape 10-K and 10-Q filings.

Scrape 10-K and 10-Q filings. Returns filing metadata + extraction-ready URLs for the primary document. Use /api/v1/scrapping/extractor to extract specific sections (Item 1A Risk Factors, Item 7 MD&A, etc.).

10 tokensSince v1.0.0

Why use this

Single-filing 10-K/10-Q scraper — pass the EDGAR index-page URL of a filing and receive full filer metadata (CIK, ticker, fiscal year end, state of incorporation, SIC, file number), the structured `documentFormatFiles[]` and `dataFiles[]` lists from the index page, and direct URLs to the primary document HTML and the XBRL instance. Use this when you have a 10-K/10-Q URL (from EDGAR search, an RSS alert, a research email) and want the structured filing record without writing your own EDGAR scraper. The 10-token cost reflects the full-EDGAR roundtrip + the BeautifulSoup parse. For surgical item extraction (just Item 1A Risk Factors, just Item 7 MD&A) prefer [GET /api/v1/scrapping/extractor](/docs/sec-filings/search-and-extraction/get-scrapping-extractor) which costs the same but returns the parsed item text directly. For the local-index version (which gives you the same `all_links` array but at 5 tokens), use [GET /api/v1/sec/filings/{accession_number}](/docs/sec-filings/sec-filings-api/get-sec-filings-accession-number).

Common use case

An RSS alert delivered an Apple 10-K URL — call this endpoint to get the parsed filer metadata + the XBRL instance URL + the primary HTML URL in one call.

Single-filing 10-K / 10-Q scraper. Pass an EDGAR index-page URL — receive parsed filer metadata, the documentFormatFiles[] + dataFiles[] lists, and direct URLs to the primary HTML body and the XBRL instance. Heavy (10 tokens) because it runs a Python subprocess that fetches + BeautifulSoup-parses the index page; cached server-side via the persisted filings table so repeat calls for the same filing are fast. For surgical item extraction (just Item 1A Risk Factors, just Item 7 MD&A) use GET /api/v1/scrapping/extractor — same 10-token cost but returns parsed item text directly. For raw HTML body access prefer GET /api/v1/sec/document?url=... (5 tokens, any document URL). For the local-index version (filing metadata at 5 tokens) use GET /api/v1/sec/filings/{accession_number}.

Parameters

NameInRequiredDefaultAllowedDescriptionExample

Response schema

FieldTypeNullableDescription
queryobjectnoEcho of input parameters.
query.formTypestringnoAlways `"Form 10"` (covers both 10-K and 10-Q variants).
query.linkstringnoEchoed input URL — useful for tracing the scrape source.
dataobjectnoScrape result envelope.
data.statusstringnoScrape outcome — `"success"` on parse + DB-persist success, `"error"` on subprocess or parse failure.
data.messagestringyesHuman-readable status message (e.g. `"Filing saved successfully"` on success, exception text on error).
data.filing_idintegeryesInternal `filings.id` row ID assigned when the scrape result was persisted to the local DB. Null on scrape error.
data.uuidstringyesUUIDv4 generated server-side for cross-environment tracking of the persisted record.
data.dataobjectnoParsed filing record — see `data.data.*` fields. Uses sec-api.io-style CamelCase field names.
data.data.cikstringyesFiler CIK as parsed from the index page (zero-padding NOT applied — may be the un-padded form). Null when the index page format is unrecognized.
data.data.tickerstringyesResolved ticker via SEC's `company_tickers.json` lookup (matched by zero-padded CIK). Empty string when the CIK has no public ticker.
data.data.formTypestringyesForm type as parsed from the filer info block (e.g. `10-K`, `10-Q`).
data.data.descriptionstringnoFiling description from EDGAR's filing-name header (e.g. `"Apple Inc. 10-K"`).
data.data.accessionNostringnoSEC accession number in canonical 18-char dashed format `XXXXXXXXXX-YY-NNNNNN`.
data.data.filingdatestringnoFiling date as displayed on EDGAR's index page (text format — typically `YYYY-MM-DD` but exact form depends on EDGAR's display convention).
data.data.acceptedstringnoFiling accepted timestamp as displayed on EDGAR (typically `YYYY-MM-DD HH:MM:SS`).
data.data.periodOfReportstringnoPeriod of report as displayed on EDGAR (typically `YYYY-MM-DD` for 10-K/10-Q — the fiscal-period-end date).
data.data.documentFormatFilesarraynoArray of structured document descriptors `[{Seq, Description, Document, Type, Size}, ...]` from the index page's "Document Format Files" table. The primary HTML/PDF body of the filing is in this list.
data.data.dataFilesarraynoArray of XBRL/data file descriptors from the index page's "Data Files" table. Populated when XBRL is embedded; empty array on filings without XBRL.
data.data.companyNameLongstringnoFiler's full legal name with embedded EDGAR metadata (e.g. `"APPLE INC. (CIK: 0000320193) (Filer)"`).
data.data.companyNamestringnoCleaned filer name without embedded metadata (e.g. `"APPLE INC."`).
data.data.linkToXBRLstringnoDirect URL to the XBRL instance document. Pair with [GET /api/v1/scrapping/xbrl?xbrl_url=...](/docs/sec-filings/search-and-extraction/get-scrapping-xbrl) for parsed financial facts.
data.data.linkToTxtstringnoDirect URL to the filing's primary HTML or TXT document body. Pair with [GET /api/v1/scrapping/extractor?url=...](/docs/sec-filings/search-and-extraction/get-scrapping-extractor) for surgical item extraction.
data.data.original_linkstringnoEchoed input `link` parameter.

Sample response

·
  • "query":
    • "formType": "Form 10"
    • "link": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=10-K"
    }
  • "data":
    • "status": "success"
    • "message": "Filing saved successfully"
    • "filing_id": 18234567
    • "uuid": "0f14ed05-3a2e-4b76-9c11-1a7c8b3f6de2"
    • "data":
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/api/v1/scrapping/form-10?api_Token=YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).