📄 SEC & ESG Report Scraper avatar

📄 SEC & ESG Report Scraper

Pricing

from $10.00 / 1,000 results

Go to Apify Store
📄 SEC & ESG Report Scraper

📄 SEC & ESG Report Scraper

Extract climate disclosures and sustainability reports directly from SEC EDGAR filings and corporate investor relations web pages.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

ESG Disclosure Tracker API

Monitor official ESG, sustainability, climate, investor relations, and SEC / EDGAR disclosure surfaces with one summary-first company digest per monitored target.

Store Quickstart

  1. Start with input.local.json for a fixture-safe baseline / changed proof.
  2. Move to store-input.example.json for a single-company official-source starter.
  3. Keep the same snapshotKey on reruns so the actor can tell you which monitored disclosure surfaces changed.

Key Features

  • 💹 Real-time market signals — Pulls current prices/rates from authoritative public APIs
  • 📊 Historical-ready output — Timestamp every row for downstream time-series analysis
  • 🌍 Multi-asset support — Handles dozens of symbols/pairs per run
  • 📡 Webhook alerts on threshold — Push to Slack when prices cross user-defined bands
  • 🔄 Cron-friendly — Idempotent runs with persistent state for scheduled monitoring

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
companiesarrayprefilledOne monitored company per output row. Use official disclosure pages and SEC / EDGAR company submissions where possible.
requestTimeoutSecondsinteger30Timeout for each disclosure page or SEC / EDGAR request.
maxCharsinteger30000Upper bound for extracted page text per monitored disclosure surface.
deliverystring"dataset"dataset writes results to the Apify dataset. webhook posts the digest JSON. email is a placeholder for later delivery ex
datasetModestring"changes_only"changes_only emits only changed companies. all emits every company row. action_needed limits results to higher-severity
webhookUrlstringPOST target for webhook delivery. Leave empty for dataset runs.
notifyOnNoChangebooleanfalseWhen false, webhook delivery is skipped if no company changed.
snapshotKeystring"esg-disclosure-tracker-snapshots"Stable key used to persist disclosure snapshots between recurring runs.

Input Example

{
"companies": [
{
"id": "microsoft",
"name": "Microsoft",
"criticality": "high",
"owner": "ESG Program Office",
"peerGroup": "mega-cap-software",
"tags": [
"software",
"scope-3",
"climate"
],
"disclosurePacks": {
"sustainability": [
{
"id": "msft-sustainability-report",
"name": "Microsoft Sustainability Report",
"url": "https://www.microsoft.com/en-us/corporate-responsibility/sustainability/report",
"includePatterns": [
"sustainability report",
"annual report",
"scope 1",
"scope 2",
"scope 3",
"net zero"
],
"staleAfterDays": 430
}
],
"sec_filings": [
{
"id": "msft-sec-10k",
"name": "Microsoft SEC climate watch",
"sourceType": "sec_edgar",
"cik": "789019",
"formTypes": [
"10-K",
"10-Q",
"8-K"
],
"staleAfterDays": 430
}
]
}
}
],
"requestTimeoutSeconds": 30,
"maxChars": 30000,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "esg-disclosure-tracker-snapshots",
"diffMode": "line_summary",
"summaryMaxLines": 12,
"concurrency": 2,
"batchDelayMs": 500,
"dryRun": false
}

Output

FieldTypeDescription
metaobject
recurringDigestobject
actionNeededarray
resultsarray
actionNeeded[].companyIdstring
actionNeeded[].companyNamestring
actionNeeded[].ownerstring
actionNeeded[].severitystring
actionNeeded[].statusstring
actionNeeded[].reasonstring
actionNeeded[].peerComparisonobject
actionNeeded[].recommendedActionsarray
actionNeeded[].executiveSummarystring

Output Example

{
"meta": {
"generatedAt": "2026-04-05T13:28:06.026Z",
"now": "2026-03-25T12:00:00.000Z",
"input": {
"companyCount": 2,
"surfaceCount": 5,
"delivery": "dataset",
"datasetMode": "all",
"diffMode": "line_summary",
"summaryMaxLines": 12,
"concurrency": 2,
"batchDelayMs": 0,
"dryRun": false
},
"snapshot": {
"key": "local-esg-disclosure-proof",
"loadedFrom": "local",
"savedTo": "local"
},
"warnings": [],
"totals": {
"companies": 2,
"monitoredSurfaces": 5,
"changedCompanies": 1,
"initialCompanies": 1,
"unchangedCompanies": 0,
"partialCompanies": 0,
"errorCompanies": 0,
"actionNeededCompanies": 1,
"changedSurfaces": 0,
"initialSurfaces": 5,
"unchangedSurfaces": 0,
"errorSurfaces": 0,
"staleSurfaces": 2,
"missingSurfaces": 0,
"newDisclosureSurfaces": 0
},
"severityCounts": {
"critical": 0,

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~esg-disclosure-tracker/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "companies": [ { "id": "microsoft", "name": "Microsoft", "criticality": "high", "owner": "ESG Program Office", "peerGroup": "mega-cap-software", "tags": [ "software", "scope-3", "climate" ], "disclosurePacks": { "sustainability": [ { "id": "msft-sustainability-report", "name": "Microsoft Sustainability Report", "url": "https://www.microsoft.com/en-us/corporate-responsibility/sustainability/report", "includePatterns": [ "sustainability report", "annual report", "scope 1", "scope 2", "scope 3", "net zero" ], "staleAfterDays": 430 } ], "sec_filings": [ { "id": "msft-sec-10k", "name": "Microsoft SEC climate watch", "sourceType": "sec_edgar", "cik": "789019", "formTypes": [ "10-K", "10-Q", "8-K" ], "staleAfterDays": 430 } ] } } ], "requestTimeoutSeconds": 30, "maxChars": 30000, "delivery": "dataset", "datasetMode": "changes_only", "notifyOnNoChange": false, "snapshotKey": "esg-disclosure-tracker-snapshots", "diffMode": "line_summary", "summaryMaxLines": 12, "concurrency": 2, "batchDelayMs": 500, "dryRun": false }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/esg-disclosure-tracker").call(run_input={
"companies": [
{
"id": "microsoft",
"name": "Microsoft",
"criticality": "high",
"owner": "ESG Program Office",
"peerGroup": "mega-cap-software",
"tags": [
"software",
"scope-3",
"climate"
],
"disclosurePacks": {
"sustainability": [
{
"id": "msft-sustainability-report",
"name": "Microsoft Sustainability Report",
"url": "https://www.microsoft.com/en-us/corporate-responsibility/sustainability/report",
"includePatterns": [
"sustainability report",
"annual report",
"scope 1",
"scope 2",
"scope 3",
"net zero"
],
"staleAfterDays": 430
}
],
"sec_filings": [
{
"id": "msft-sec-10k",
"name": "Microsoft SEC climate watch",
"sourceType": "sec_edgar",
"cik": "789019",
"formTypes": [
"10-K",
"10-Q",
"8-K"
],
"staleAfterDays": 430
}
]
}
}
],
"requestTimeoutSeconds": 30,
"maxChars": 30000,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "esg-disclosure-tracker-snapshots",
"diffMode": "line_summary",
"summaryMaxLines": 12,
"concurrency": 2,
"batchDelayMs": 500,
"dryRun": false
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/esg-disclosure-tracker').call({
"companies": [
{
"id": "microsoft",
"name": "Microsoft",
"criticality": "high",
"owner": "ESG Program Office",
"peerGroup": "mega-cap-software",
"tags": [
"software",
"scope-3",
"climate"
],
"disclosurePacks": {
"sustainability": [
{
"id": "msft-sustainability-report",
"name": "Microsoft Sustainability Report",
"url": "https://www.microsoft.com/en-us/corporate-responsibility/sustainability/report",
"includePatterns": [
"sustainability report",
"annual report",
"scope 1",
"scope 2",
"scope 3",
"net zero"
],
"staleAfterDays": 430
}
],
"sec_filings": [
{
"id": "msft-sec-10k",
"name": "Microsoft SEC climate watch",
"sourceType": "sec_edgar",
"cik": "789019",
"formTypes": [
"10-K",
"10-Q",
"8-K"
],
"staleAfterDays": 430
}
]
}
}
],
"requestTimeoutSeconds": 30,
"maxChars": 30000,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "esg-disclosure-tracker-snapshots",
"diffMode": "line_summary",
"summaryMaxLines": 12,
"concurrency": 2,
"batchDelayMs": 500,
"dryRun": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Use Apify Schedules to run this every N minutes and build your own historical dataset.
  • Threshold alerts work best with webhook delivery — pipe into PagerDuty/Slack for ops visibility.
  • For trading applications, note that public APIs have 5–15 minute lag. Don't use for HFT.
  • Combine with weather-forecast-fetcher or sec-edgar-filings-monitor for cross-signal strategies.
  • Source APIs are free — this actor has no subscription cost beyond Apify compute.

FAQ

What's the data source?

Authoritative public APIs (e.g., ECB, Federal Reserve, SEC EDGAR, exchange official APIs). See actor-specific docs for the full list.

How do I backtest historical data?

Schedule this actor daily and accumulate Apify Dataset rows — you build your own history over time.

Are there rate limits?

Source APIs rate-limit at their level. This actor respects those with built-in backoff.

How fresh is the data?

Typically 1–15 minutes behind real-time, depending on the source API. Check each actor's meta.dataAge field.

Can I use this for trading automation?

For backtesting/research yes. For live trading, use a paid real-time feed — this actor prioritizes reliability over sub-second latency.

Market Data & Financial APIs cluster — explore related Apify tools:

Cost

Pay Per Event:

  • actor-start: $0.01 (flat fee per run)
  • dataset-item: $0.003 per output item

Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01

No subscription required — you only pay for what you use.