/api/v1/scrapping/form-10Scrape 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.).
Why use this
Common use case
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
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| link | query | required | — | — | Full SEC EDGAR URL of the filing's index page (NOT the primary document — must be the index page that lists all documents in the filing package). Get from the `linkToFilingDetails` field in `/scrapping/cik` responses, or from the `primary_link` field in `/api/v1/sec/filings` responses. Returns 400 BAD_REQUEST when missing. Server-side fetches via Python subprocess with a 5-minute timeout. | https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=10-K&dateb=&owner=include&count=40 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| query | object | no | Echo of input parameters. |
| query.formType | string | no | Always `"Form 10"` (covers both 10-K and 10-Q variants). |
| query.link | string | no | Echoed input URL — useful for tracing the scrape source. |
| data | object | no | Scrape result envelope. |
| data.status | string | no | Scrape outcome — `"success"` on parse + DB-persist success, `"error"` on subprocess or parse failure. |
| data.message | string | yes | Human-readable status message (e.g. `"Filing saved successfully"` on success, exception text on error). |
| data.filing_id | integer | yes | Internal `filings.id` row ID assigned when the scrape result was persisted to the local DB. Null on scrape error. |
| data.uuid | string | yes | UUIDv4 generated server-side for cross-environment tracking of the persisted record. |
| data.data | object | no | Parsed filing record — see `data.data.*` fields. Uses sec-api.io-style CamelCase field names. |
| data.data.cik | string | yes | Filer 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.ticker | string | yes | Resolved ticker via SEC's `company_tickers.json` lookup (matched by zero-padded CIK). Empty string when the CIK has no public ticker. |
| data.data.formType | string | yes | Form type as parsed from the filer info block (e.g. `10-K`, `10-Q`). |
| data.data.description | string | no | Filing description from EDGAR's filing-name header (e.g. `"Apple Inc. 10-K"`). |
| data.data.accessionNo | string | no | SEC accession number in canonical 18-char dashed format `XXXXXXXXXX-YY-NNNNNN`. |
| data.data.filingdate | string | no | Filing 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.accepted | string | no | Filing accepted timestamp as displayed on EDGAR (typically `YYYY-MM-DD HH:MM:SS`). |
| data.data.periodOfReport | string | no | Period of report as displayed on EDGAR (typically `YYYY-MM-DD` for 10-K/10-Q — the fiscal-period-end date). |
| data.data.documentFormatFiles | array | no | Array 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.dataFiles | array | no | Array 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.companyNameLong | string | no | Filer's full legal name with embedded EDGAR metadata (e.g. `"APPLE INC. (CIK: 0000320193) (Filer)"`). |
| data.data.companyName | string | no | Cleaned filer name without embedded metadata (e.g. `"APPLE INC."`). |
| data.data.linkToXBRL | string | no | Direct 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.linkToTxt | string | no | Direct 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_link | string | no | Echoed 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
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected 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).