SEC EDGAR Scraper (Financials, Filings, Form 4, No API Key)
Pricing
from $1.10 / 1,000 records
SEC EDGAR Scraper (Financials, Filings, Form 4, No API Key)
Get SEC EDGAR data by ticker, CIK or company name: quarterly and annual revenue, net income, EPS, free cash flow and debt from XBRL; 10-K, 10-Q and 8-K filings with 8-K items in words; Form 4 insider trades by role. Only new filings since your last run. No API key. $2 per 1,000 records.
Pricing
from $1.10 / 1,000 records
Rating
0.0
(0)
Developer
locaihost data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Get official SEC EDGAR data for any company that files with the SEC, by ticker, CIK or name: quarterly and annual financial statements from XBRL, 10-K, 10-Q and 8-K filings with 8-K events in plain words, and Form 4 insider trades by role, one row per record, each linked to its SEC filing. No login, no API key.
- Build a financial history: quarterly and annual revenue, margins, EPS and free cash flow for a watchlist, in one table.
- Screen for insider buying and selling: Form 4 trades by officers, directors and 10% owners, with the 10b5-1 plan flag.
- Track earnings and events: a daily feed of new 8-Ks (results, executive changes, deals) for the companies you cover.
- Feed dashboards, screeners and backtests with normalised fundamentals straight from the filings.
- Give an AI agent sourced numbers: every row links to the filing it came from, so the agent can cite it.
Quick start
Paste this into the JSON tab of the input and click Start:
{"companies": ["AAPL"], "periods": "quarterly", "lastNPeriods": 4, "maxInsiderFilingsPerCompany": 2}
You get about 10 rows in under 15 seconds: Apple's last 4 quarters of fundamentals, its 10-K, 10-Q and 8-K filings from the last 90 days, and the trades in its 2 newest Form 4s. The filing and trade counts depend on what was filed recently. Remove the last three fields to get 8 years and 8 quarters plus up to 50 Form 4s per company.
What data can I get?

All three record types share one dataset; recordType says which one a row is.
| Group | Fields |
|---|---|
| Every row | recordType (fundamentals, filing or insiderTrade), cik, ticker, companyName, filingUrl (back to the SEC), recordId (unique and stable across runs), scrapedAt |
| Period | periodType (annual or quarterly), fy, fp (FY, Q1 to Q4), periodStart, periodEnd, form, filed, currency |
| Income | revenue, netIncome, operatingIncome, epsBasic, epsDiluted (3 months for quarters, 12 months for years) |
| Balance sheet | totalAssets, totalLiabilities, stockholdersEquity, cashAndEquivalents, longTermDebt, sharesOutstanding |
| Cash flow | operatingCashFlow, capitalExpenditures, freeCashFlow (operating cash flow minus CapEx) |
| Audit trail | derivedMetrics (computed by subtraction), restatedMetrics (a later filing changed them; the later number is used), concepts (the XBRL tag behind each number) |
| Filings | form, filingDate, reportDate, acceptedAt, accessionNumber, items + itemDescriptions (8-K codes in words, such as "2.02 Results of Operations and Financial Condition"), documentUrl |
| Insider trades | insiderRole (e.g. "Officer (CEO)", "Director", "10% Owner"), insiderType, isDirector, isOfficer, isTenPercentOwner, officerTitle, transactionDate, transactionCode + transactionLabel, acquiredDisposed, shares, pricePerShare, value, sharesOwnedAfter, directOrIndirect, ownershipNature, is10b51Plan, securityTitle, transactionIndex |
One real row (run on 2026-10-18, some fields trimmed):
{"recordType": "fundamentals","cik": "0000320193","ticker": "AAPL","companyName": "Apple Inc.","periodType": "quarterly","fy": 2026,"fp": "Q3","periodStart": "2026-03-29","periodEnd": "2026-06-27","form": "10-Q","filed": "2026-07-31","currency": "USD","revenue": 109417000000,"netIncome": 29789000000,"operatingIncome": 35695000000,"epsDiluted": 2.02,"totalAssets": 383266000000,"cashAndEquivalents": 39544000000,"operatingCashFlow": 34369000000,"capitalExpenditures": 2455000000,"freeCashFlow": 31914000000,"longTermDebt": 82300000000,"derivedMetrics": ["operatingCashFlow", "capitalExpenditures"],"restatedMetrics": [],"concepts": {"revenue": "RevenueFromContractWithCustomerExcludingAssessedTax", "netIncome": "NetIncomeLoss", "…": "…"},"filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000020/0000320193-26-000020-index.htm"}
The dataset has four views (All records, Fundamentals, Filings, Insider trades), so you can export a CSV or Excel file with only one type's columns. It also exports to JSON or HTML. The run's SUMMARY record lists per-company counts and any inputs that weren't found.
Individual insiders are never named. Insider-trade rows give the insider's role and officer title, never the person's name, CIK, address or the filing's footnotes. insiderName and insiderCik are filled only for organisations that file as insiders (funds, holding companies); family and personal trusts count as individuals. ownershipNature keeps generic wording as filed ("By Spouse", "By 401(k) Plan") and turns anything that could name someone into a category such as "By trust" or "By entity".
How much does it cost?
You pay per record returned: one fundamentals period, one filing or one insider trade. There is no charge for Apify platform usage on top.
| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Record | $2.00 per 1,000 | $1.50 per 1,000 | $1.10 per 1,000 |
Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 2,500 records. Free-plan runs stop at 100 records each; any paid Apify plan removes the cap.
For example, 10 companies with fundamentals only and the defaults (last 8 fiscal years plus last 8 quarters) give up to 160 records: $0.32 on Starter.
What's free: company lookups, companies not found on EDGAR, records skipped by onlyNew, the SUMMARY record, runs with no valid input, and runs where SEC EDGAR doesn't answer at all. A new-only run that finds nothing costs only the start fee. To cap a run's spend, set Maximum cost per run in the run options, or use maxResults.
Limits, stated up front
- Up to 500 companies per run; extra inputs are ignored.
maxFilingsPerCompany(default 100) andmaxInsiderFilingsPerCompany(default 50 Form 4s) limit each company. - The Actor stays under 8 SEC requests per second, so big lists take longer: roughly a second per company plus a second per 8 Form 4 filings. If the run's time limit is reached, it keeps what it has and ends normally.
- As-reported data: numbers are what companies tagged in their XBRL filings, not analyst-adjusted figures. The Actor tries several tags per metric, keeps the latest restated value, separates 3-month quarters from year-to-date figures, and derives Q2 to Q4 cash flow and fiscal Q4 from cumulative numbers. Fiscal Q4 EPS is left empty, because EPS doesn't add up across quarters.
- XBRL fundamentals go back to roughly 2009-2011, depending on company size. Funds, trusts and foreign filers reporting under IFRS (20-F, 40-F) have no US-GAAP fundamentals; their filings and insider trades still work.
sharesOutstandingcomes from the filing's cover page and is not adjusted for later stock splits; EPS is split-adjusted when a later filing recast it.- Insider trades cover Form 4 non-derivative transactions (stock bought, sold, awarded, exercised or gifted). Option grants in the derivative table are not included, and Form 4s a company files as an owner of another company's shares are skipped.
- If a company moved to a new holding company, its ticker points to the new CIK. Add the old CIK as an extra company to get older history.
Only new since last run, and schedules
Turn on onlyNew and save the input as a task with a daily schedule (under Schedules in Apify Console): each run returns only filings, trades and periods this saved configuration hasn't returned before, and skipped records cost nothing. That makes a cheap alert feed for new 8-Ks or insider sales. The memory is per configuration: changing companies, modes, form types or periods starts fresh, and a restated fundamentals period comes back.
Integrations: API, n8n, Make and AI agents
API. Run it and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/locaihost~sec-edgar/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["AAPL", "MSFT"], "modes": ["fundamentals"], "periods": "annual", "lastNPeriods": 5}'
Python, with pip install apify-client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("locaihost/sec-edgar").call(run_input={"companies": ["AAPL", "MSFT", "NVDA"], "modes": ["insiderTrades"], "sinceDate": "30 days"})for t in client.dataset(run["defaultDatasetId"]).iterate_items():if t["transactionCode"] in ("P", "S"): # open-market buys and sells onlyprint(t["ticker"], t["insiderRole"], t["transactionLabel"], t["shares"], t["value"])
n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it.
AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/sec-edgar, then ask something like "Compare NVIDIA's and Apple's revenue, net income and free cash flow for the last four quarters, and cite the filing for each number." Agents should ask only for the modes they need (for example "modes": ["fundamentals"], "periods": "quarterly", "lastNPeriods": 4), because every row is charged.
FAQ
How much does it cost to scrape SEC EDGAR?
$2.00 per 1,000 records on the Free and Starter plans, $1.50 on Scale and $1.10 on Business. Not-found companies and records skipped by onlyNew are free. Apify's free $5 monthly credit covers about 2,500 records.
Can I use it through the API or from Python?
Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's rows are also available as JSON, CSV or Excel from its dataset.
Can I use it from an AI agent?
Yes. Through the Apify MCP server (https://mcp.apify.com/?tools=locaihost/sec-edgar) any MCP client can ask for a company's fundamentals, filings or insider trades and read the rows back.
Is it legal to scrape SEC EDGAR?
The Actor reads only the SEC's public EDGAR endpoints (the company ticker list, submissions, XBRL company facts and Form 4 XML). EDGAR filings are published for public access, and the SEC documents fair-access rules for automated use, which this Actor follows: a declared User-Agent with a contact address and a request rate below the SEC's limit of 10 per second. It never logs in, and it never names individual insiders. The data is as filed and is not investment advice; you are responsible for how you use it.
Why are some fields empty?
- Fundamentals: the company didn't use a standard US-GAAP tag (banks report no operating income, for example), or it is a fund, trust or IFRS filer. Fiscal Q4 EPS is always empty.
- Insider
valueof 0: awards, option exercises, tax withholding and gifts (codes A, M, F, G) are often reported at a price of 0. To total insider buying and selling, keep only codesPandS. insiderNameis null: the insider is a person, and individuals are never named.- Assets don't equal liabilities plus equity:
stockholdersEquityis the parent company's equity and excludes non-controlling interests.
A ticker wasn't found. What can I do?
Use the ticker as listed (BRK.B), the CIK (1067983) or the company name. A company that changed its ticker is found under the new one, or by name or CIK. Inputs that don't match are listed in SUMMARY and cost nothing.
More from locaihost data
- Company identity and sanctions check: LEI, registry and sanctions-list checks for the companies you research.
- Government tenders: public contract notices and awards from the UK, EU, Canada, the US and Australia.
- Company enrichment by domain: name, description, logo, socials and role contact addresses from a company's own site.
- Document to Markdown converter: turn the 10-K and 8-K documents you find here into clean Markdown.
Did it help?
If this saved you time, a quick rating on the Store helps other people find it.
Support
Something not working, or a metric or form type you need? Open an issue on the Issues tab: we answer issues within 24 hours.