Finance Statements API
Scrape Finance Statements data with one API call. Returns income-statement, balance-sheet and cash-flow line items per reporting period as a unified FinancialStatementList. Line-item names match the `financials` block inside /v1/finance/quote, so both surfaces spell `net_income` the same way. Every `_delta` leaf is the period-over-period fractional change of its line item; the earliest period has nothing to compare against and reports null rather than a fabricated zero. Four leaves have no source on this surface and are always null: `currency`, `price_to_book`, `return_on_assets` and `return_on_capital` (the last two are conventionally trailing-twelve-month ratios over averaged denominators, and a single-period substitute would be a different number wearing the same name). The oldest one or two periods can arrive carrying only their identity leaves, which is what the upstream holds for them, not a fault. IMPORTANT: rows are keyed by fiscal period END, not by filing date. This surface therefore cannot support point-in-time reconstruction, and a restatement silently replaces the original figures, so a backtest built on it carries look-ahead bias.
Last updated October 2026Maintained by the SocialCrawl team
Returns income, balance sheet and cash flow line items per period, each with its period-over-period fractional change. Currency, price to book, ROA and ROIC have no source here and are always null.
Use it for fundamentals screening. Rows are keyed by fiscal period end, NOT filing date, so point-in-time reconstruction is not supported.
Searching 68 platforms in parallel
What can you do with the Statements API?
The Statements endpoint gives you structured Finance data with computed fields in a single request. No scraping infrastructure to build or maintain.
Example Request
curl -H "x-api-key: YOUR_API_KEY" \
"https://www.socialcrawl.dev/v1/finance/statements?keyword=AAPL&type=quarterly"import requests
response = requests.get(
"https://www.socialcrawl.dev/v1/finance/statements",
params={
'keyword': 'AAPL',
'type': 'quarterly',
},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()const response = await fetch(
"https://www.socialcrawl.dev/v1/finance/statements?keyword=AAPL&type=quarterly",
{
headers: { "x-api-key": "YOUR_API_KEY" },
},
);
const data = await response.json();Parameters
| Parameter | Required | Description |
|---|---|---|
| keyword | Yes | Company ticker. A bare symbol ('AAPL') or the 'TICKER:EXCHANGE' form; the exchange suffix is ignored. |
| type | No | Reporting periodicity: annual, quarterly, or trailing. Defaults to annual. (annual | quarterly | trailing) |
What does the Finance Statements API return?
Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.
Example response
{
"success": true,
"platform": "finance",
"endpoint": "/v1/finance/statements",
"data": {
"items": [
{
"financial_statement": {
"id": "AAPL:combined:2024-12-31T00:00:00Z",
"symbol": "AAPL",
"statement": "combined",
"period_type": "quarterly",
"period_end": "2024-12-31T00:00:00Z",
"currency": null,
"revenue": null,
"revenue_delta": null,
"operating_expense": null,
"operating_expense_delta": null,
"net_income": null,
"net_income_delta": null,
"net_profit_margin": null,
"net_profit_margin_delta": null,
"earnings_per_share": null,
"earnings_per_share_delta": null,
"ebitda": null,
"ebitda_delta": null,
"effective_tax_rate": null,
"cash_and_short_term_investments": null,
"cash_and_short_term_investments_delta": null,
"total_assets": null,
"total_assets_delta": null,
"total_liabilities": null,
"total_liabilities_delta": null,
"total_equity": null,
"shares_outstanding": null,
"price_to_book": null,
"return_on_assets": null,
"return_on_capital": null,
"cash_from_operations": null,
"cash_from_operations_delta": null,
"cash_from_investing": null,
"cash_from_investing_delta": null,
"cash_from_financing": null,
"cash_from_financing_delta": null,
"net_change_in_cash": null,
"net_change_in_cash_delta": null,
"free_cash_flow": null,
"free_cash_flow_delta": null
}
},
{
"financial_statement": {
"id": "AAPL:combined:2025-03-31T00:00:00Z",
"symbol": "AAPL",
"statement": "combined",
"period_type": "quarterly",
"period_end": "2025-03-31T00:00:00Z",
"currency": null,
"revenue": null,
"revenue_delta": null,
"operating_expense": null,
"operating_expense_delta": null,
"net_income": null,
"net_income_delta": null,
"net_profit_margin": null,
"net_profit_margin_delta": null,
"earnings_per_share": null,
"earnings_per_share_delta": null,
"ebitda": null,
"ebitda_delta": null,
"effective_tax_rate": null,
"cash_and_short_term_investments": null,
"cash_and_short_term_investments_delta": null,
"total_assets": null,
"total_assets_delta": null,
"total_liabilities": null,
"total_liabilities_delta": null,
"total_equity": null,
"shares_outstanding": null,
"price_to_book": null,
"return_on_assets": null,
"return_on_capital": null,
"cash_from_operations": null,
"cash_from_operations_delta": null,
"cash_from_investing": null,
"cash_from_investing_delta": null,
"cash_from_financing": null,
"cash_from_financing_delta": null,
"net_change_in_cash": null,
"net_change_in_cash_delta": null,
"free_cash_flow": null,
"free_cash_flow_delta": null
}
}
],
"total": null,
"dropped": 0
},
"credits_used": 5,
"request_id": "req_example000000",
"cached": false,
"pagination": {
"next_cursor": null,
"has_more": false,
"page_size": 7
},
"credits_remaining": 9999,
"redacted": true
}Live sample illustrating the unified response shape. Field values reflect the record you query.
How does the Finance Statements API work?
Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.
Method
GET
Response
JSON
How do you scrape social media data in seconds?
The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 68 platforms covering 10B+ monthly active users.
One schema, every platform
Query 68 platforms with identical response structures. Write your integration once.
Computed fields, not just scraped
When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.
See your data before you code
Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.
import requests
response = requests.get(
'https://www.socialcrawl.dev/v1/tiktok/profile',
params={'handle': 'charlidamelio'},
headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json(){
"success": true,
"platform": "tiktok",
"data": {
"author": {
"username": "charlidamelio",
"followers": 152400000
},
"engagement": {
"likes": 12400000000,
"engagement_rate": 0.087
},
"metadata": {
"language": "en",
"content_category": "lifestyle"
}
}
}Ready to scrape Finance Statements data?
Get your API key and start pulling Finance data in under 60 seconds.
