SEC Form N-PX Proxy Voting Scraper
Pricing
Pay per event
SEC Form N-PX Proxy Voting Scraper
Extract institutional proxy votes from 2024+ SEC Form N-PX filings. Search by filer, CIK, accession, URL, or date and export normalized records with source links.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
SEC Form N-PX Proxy Voting Scraper turns public SEC EDGAR filings into analysis-ready institutional voting records.
Discover filings by filer, CIK, accession number, filing URL, and date range, then export one normalized row for every disclosed vote direction.
No SEC API key, browser, login, or paid data subscription is required.
What does SEC Form N-PX Proxy Voting Scraper do?
The Actor discovers 2024+ structured Form N-PX and N-PX/A filings and parses their official proxy-voting XML.
It returns filer and filing metadata, issuer identifiers, meeting dates, proposal text and categories, shares voted and on loan, vote directions, management recommendations, manager/series identifiers, and source links.
Unlike a general SEC filing search, it produces vote-level rows ready for comparison and aggregation.
Use the prefilled Vanguard filing for a fast first run.
Who is this SEC proxy voting scraper for?
Stewardship and ESG analysts
- Compare how managers voted on compensation, governance, climate, and social proposals.
- Trace every result to the original SEC filing and XML document.
- Schedule annual refreshes after the N-PX filing season.
Asset managers and compliance teams
- Review disclosed votes and amendments.
- Build internal controls around filing dates, accessions, and report periods.
- Export evidence to spreadsheets, warehouses, or case-management systems.
Governance researchers and journalists
- Find proposals by issuer, category, meeting date, or vote direction.
- Compare management recommendations with institutional votes.
- Preserve reproducible source URLs in published research.
Data product teams
- Feed normalized records into fund comparison, stewardship, or alert products.
- Use the API, schedules, webhooks, and datasets instead of maintaining an EDGAR parser.
Why use this Form N-PX data extractor?
- ๐๏ธ Official source โ reads public SEC EDGAR data.
- ๐ Four discovery routes โ filer text, CIK, accession, or filing URL.
- ๐งพ Vote-level normalization โ one row per disclosed
voteRecorddirection. - ๐ Strong provenance โ filing index and exact vote-document links.
- ๐ก๏ธ Fail-closed validation โ invalid dates, accessions, CIKs, and non-SEC URLs are rejected.
- โก HTTP-only โ no browser overhead or residential proxy requirement.
- ๐ Automation-ready โ run via API, schedule, webhook, Make, Zapier, or MCP.
- ๐ฆ Flexible export โ download JSON, CSV, Excel, XML, or RSS from Apify datasets.
What Form N-PX data can you extract?
| Category | Fields |
|---|---|
| Filer | filerName, filerCik, reportType |
| Filing | filingType, accessionNumber, filingDate, periodOfReport |
| Amendment | isAmendment, amendmentNumber |
| Security | issuerName, cusip, isin, figi |
| Proposal | meetingDate, proposalText, proposalCategories, proposalSource |
| Shares | sharesVoted, sharesOnLoan, voteShares |
| Decision | voteDirection, managementRecommendation |
| Fund context | managerNumber, seriesIds, otherInformation |
| Provenance | filingIndexUrl, voteDocumentUrl, scrapedAt |
Each output row repeats the relevant filing and proposal context, so it remains useful after filtering or export.
If a proposal contains multiple vote records, each direction is preserved as a separate row with its own share count.
How much does it cost to extract SEC proxy votes?
This Actor uses pay-per-event pricing.
You pay a small run-start fee plus a fee for each normalized proxy-vote row saved.
| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Run start | $0.005 | $0.005 | $0.005 | $0.005 |
| Proxy vote row | $0.000032785 | $0.000028508 | $0.000022237 | $0.000017105 |
Higher Apify plans receive additional volume discounts.
A 100-row extraction costs about $0.0083 on the Free plan.
Your Apify Free plan includes monthly platform credits, enough for many small filing checks.
Final production prices are always shown before you start a run.
How to scrape SEC Form N-PX filings
- Open SEC Form N-PX Proxy Voting Scraper on Apify.
- Keep the prefilled SEC filing URL for a quick test, or remove it.
- Add a filer query, one or more CIKs, accession numbers, or official filing URLs.
- Set a 2024-or-later filing date range if needed.
- Choose maximum filings and vote rows.
- Click Start.
- Preview the dataset, then export or integrate it.
Search by filer
{"filerQuery": "BlackRock","startDate": "2024-08-01","endDate": "2024-08-31","maxFilings": 2,"maxVotes": 100}
Fetch by CIK
{"ciks": ["1767306"],"startDate": "2024-01-01","maxFilings": 3,"maxVotes": 500}
Reproduce an exact filing
{"accessions": ["0001420506-24-001637"],"maxFilings": 1,"maxVotes": 50}
Input parameters
| Parameter | Type | Default | Purpose |
|---|---|---|---|
filerQuery | string | โ | Search filer, fund, manager, or series text in SEC EFTS |
ciks | string[] | โ | Read recent filings for exact registrant CIKs |
accessions | string[] | โ | Resolve exact SEC accession numbers |
filingUrls | URL[] | sample filing | Read official archive filing/index/XML URLs |
startDate | string | 2024-01-01 | Earliest filing date |
endDate | string | โ | Latest filing date |
includeAmendments | boolean | true | Keep N-PX/A amendments |
maxFilings | integer | 3 | Bound filing downloads |
maxVotes | integer | 100 | Bound normalized output rows |
requestDelayMs | integer | 150 | Delay between SEC requests |
userAgent | string | descriptive Actor ID | SEC fair-access identification |
At least one discovery route must be present.
Multiple routes can be combined; matching filings are deduplicated by accession.
Explicit URLs must use www.sec.gov/Archives/edgar/data/... and point inside a filing directory.
Output example
{"filerName": "Vanguard Personalized Indexing Management, LLC","filerCik": "0001767306","filingType": "N-PX/A","accessionNumber": "0001420506-24-001637","filingDate": "2024-08-20","periodOfReport": "2024-06-30","isAmendment": true,"issuerName": "Snowflake Inc.","cusip": "833445109","isin": "US8334451098","meetingDate": "2023-07-05","proposalText": "To approve, on an advisory basis, the compensation of our named executive officers.","proposalCategories": ["SECTION 14A SAY-ON-PAY VOTES"],"sharesVoted": 10650,"sharesOnLoan": 0,"voteDirection": "FOR","voteShares": 10650,"managementRecommendation": "FOR","filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/1767306/000142050624001637/0001420506-24-001637-index.html","voteDocumentUrl": "https://www.sec.gov/Archives/edgar/data/1767306/000142050624001637/FormN-PX_ProxyVoteTable.xml"}
Optional fields appear only when the filer supplied them.
Numeric share fields remain numbers, dates use ISO YYYY-MM-DD, and source URLs are complete links.
How filing discovery works
For CIK inputs, the Actor reads the official SEC submissions JSON and filters recent forms to N-PX/N-PX/A.
For filer text and accession inputs, it uses SEC full-text search metadata.
For every filing, it reads the archive index instead of guessing a filename.
It prefers a document identified as PROXY VOTING RECORD, then validates XML contents for structured proxyTable rows.
This handles filenames such as proxytable.xml, votetable.xml, and filer-specific names.
Tips for best results
- ๐ฏ Start with one filing and 10โ100 votes.
- ๐ Use narrow dates for broad filer names such as BlackRock or Vanguard.
- ๐ Prefer CIKs over text when you need one exact registrant.
- ๐ Keep a descriptive
userAgentvalue under SEC fair-access guidance. - ๐งฎ Raise
maxVotesfor full-filing exports; one annual filing can contain thousands of matters. - ๐ Schedule annual refreshes around filing season rather than polling aggressively.
- ๐งพ Keep amendments enabled when audit completeness matters.
- ๐ Store source URLs beside downstream analysis for reproducibility.
Data quality and deduplication
Filings are deduplicated by accession number across all discovery routes.
Rows are deduplicated by accession, proposal position, vote-record position, issuer, meeting date, and direction.
The known template placeholder row found in some filer-generated XML is rejected because its issuer value is literally issuerName.
A run fails if matching filings download but no structured vote rows can be extracted.
The Actor intentionally focuses on the uniform structured XML era beginning in 2024; it does not claim to normalize older free-form filings.
SEC fair-access behavior
Requests carry a descriptive User-Agent and are paced to at least 100 milliseconds apart.
HTTP 429 and server errors receive bounded exponential-backoff retries.
No browser, CAPTCHA solver, login, cookie, proxy, or private SEC credential is used.
Keep concurrency conservative and do not remove the request delay for large scheduled workloads.
See the SEC privacy and security policy for current access guidance.
Integrations for proxy-vote workflows
SEC N-PX โ Google Sheets
Send annual vote rows to a stewardship review sheet, grouped by manager, issuer, and category.
SEC N-PX โ BigQuery or Snowflake
Load normalized records into a warehouse and compare managers across filing years.
SEC N-PX โ Slack or Microsoft Teams
Schedule a filer/date query and alert researchers when a new filing or amendment appears.
SEC N-PX โ Make or Zapier
Trigger a no-code workflow that filters compensation proposals and creates review tasks.
SEC N-PX โ webhook
Process completed datasets in a governance platform immediately after each scheduled run.
Using the Apify API with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/sec-form-n-px-proxy-voting-scraper').call({accessions: ['0001420506-24-001637'],maxFilings: 1,maxVotes: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use your Apify API token from environment variables; do not commit it to source control.
Using the Apify API with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("automation-lab/sec-form-n-px-proxy-voting-scraper").call(run_input={"ciks": ["1767306"],"startDate": "2024-01-01","maxFilings": 1,"maxVotes": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Using the Apify API with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~sec-form-n-px-proxy-voting-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"filerQuery":"BlackRock","startDate":"2024-08-01","endDate":"2024-08-31","maxFilings":1,"maxVotes":25}'
Poll the returned run ID or use an Apify webhook to receive completion events.
Use SEC Form N-PX data with AI agents via MCP
The Actor can be called by AI assistants through the Apify MCP server.
Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/sec-form-n-px-proxy-voting-scraper"
Claude Desktop, Cursor, or VS Code
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/sec-form-n-px-proxy-voting-scraper"}}}
Authentication uses your Apify account on first connection.
Example prompts:
- "Use automation-lab/sec-form-n-px-proxy-voting-scraper to extract the first 100 votes from accession 0001420506-24-001637."
- "Find 2024 BlackRock N-PX filings and summarize votes against management by issuer."
- "Export compensation proposal votes for CIK 1767306 into a CSV-ready table with source links."
Scheduling an N-PX filing monitor
Create an Apify schedule with a filer query or CIK, a recent filing-date window, and a conservative vote limit.
Connect a webhook that reads the default dataset when the run succeeds.
Deduplicate downstream by accessionNumber, proposalText, issuerName, voteDirection, and voteShares.
Update the date window periodically, or have your orchestration layer calculate it before each API call.
For annual compliance archives, retain both JSON data and original SEC source URLs.
Is it legal to scrape SEC Form N-PX data?
SEC EDGAR filings are public government records.
This Actor accesses official public endpoints without bypassing authentication or technical restrictions.
You remain responsible for your use, retention, redistribution, attribution, and any privacy or regulatory obligations.
Follow SEC fair-access policies, use conservative request rates, and verify critical conclusions against the original filing.
This tool provides data extraction, not legal, investment, compliance, or voting advice.
Limitations
- Only structured Form N-PX XML filed in 2024 or later is supported.
- SEC source availability and schema details can change.
- Some filers omit optional identifiers or contextual fields.
voteDirectionreflects the filed value; the Actor does not infer intent.- One proposal can produce multiple rows when multiple vote records are disclosed.
- A CIK route reads recent submissions; use accession or filer search for an exact older structured filing.
- Results are not enriched with market data, issuer tickers, or proprietary ESG scores.
FAQ
How fast is the SEC Form N-PX scraper?
A one-filing, 10-row evaluation typically finishes quickly because it uses direct HTTP and structured XML. Large filings take longer because the XML may contain thousands of proxy matters.
How much does an N-PX extraction cost?
Cost equals the displayed run-start fee plus the displayed per-vote-row price. Set maxVotes to control the maximum variable charge.
How is this different from SEC EDGAR search?
EDGAR search finds filing documents. This Actor discovers them and converts structured proxy-vote tables into normalized, exportable rows.
Why did my filer search return no results?
Check spelling, use a narrower date range, or use the registrant CIK. The Actor deliberately rejects pre-2024 dates because older filings are not covered by this structured parser.
Why did the run fail after finding a filing?
The filing may not contain a valid structured PROXY VOTING RECORD XML document. Use a 2024+ N-PX accession and inspect the linked SEC filing index.
Why are ISIN, FIGI, series ID, or manager number missing?
Those fields are optional in SEC filings. Missing source values are not invented.
Does it support N-PX amendments?
Yes. Leave includeAmendments enabled to include N-PX/A filings, amendment flags, and amendment numbers.
Do I need a proxy or SEC API key?
No. The Actor uses anonymous official SEC endpoints with descriptive identification and fair-access pacing.
Other SEC and finance scrapers
- SEC EDGAR Scraper
- SEC Form 4 Insider Transactions Scraper
- SEC Form D Scraper
- SEC Form N-PORT Mutual Fund Holdings Scraper
- SEC Schedule 13D Ownership Scraper
- SEC Schedule 13G Passive Ownership Scraper
- SEC Litigation Releases Scraper
- SEC Investor Alerts Scraper
Use these related Actors when the workflow needs broad filing metadata, insider transactions, private offerings, fund holdings, beneficial ownership, or enforcement information rather than vote-level N-PX records.