SEC Form N-PX Proxy Voting Scraper avatar

SEC Form N-PX Proxy Voting Scraper

Pricing

Pay per event

Go to Apify Store
SEC Form N-PX Proxy Voting Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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 voteRecord direction.
  • ๐Ÿ”— 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?

CategoryFields
FilerfilerName, filerCik, reportType
FilingfilingType, accessionNumber, filingDate, periodOfReport
AmendmentisAmendment, amendmentNumber
SecurityissuerName, cusip, isin, figi
ProposalmeetingDate, proposalText, proposalCategories, proposalSource
SharessharesVoted, sharesOnLoan, voteShares
DecisionvoteDirection, managementRecommendation
Fund contextmanagerNumber, seriesIds, otherInformation
ProvenancefilingIndexUrl, 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.

EventFreeStarterScaleBusiness
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

  1. Open SEC Form N-PX Proxy Voting Scraper on Apify.
  2. Keep the prefilled SEC filing URL for a quick test, or remove it.
  3. Add a filer query, one or more CIKs, accession numbers, or official filing URLs.
  4. Set a 2024-or-later filing date range if needed.
  5. Choose maximum filings and vote rows.
  6. Click Start.
  7. 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

ParameterTypeDefaultPurpose
filerQuerystringโ€”Search filer, fund, manager, or series text in SEC EFTS
ciksstring[]โ€”Read recent filings for exact registrant CIKs
accessionsstring[]โ€”Resolve exact SEC accession numbers
filingUrlsURL[]sample filingRead official archive filing/index/XML URLs
startDatestring2024-01-01Earliest filing date
endDatestringโ€”Latest filing date
includeAmendmentsbooleantrueKeep N-PX/A amendments
maxFilingsinteger3Bound filing downloads
maxVotesinteger100Bound normalized output rows
requestDelayMsinteger150Delay between SEC requests
userAgentstringdescriptive Actor IDSEC 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 userAgent value under SEC fair-access guidance.
  • ๐Ÿงฎ Raise maxVotes for 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.
  • voteDirection reflects 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

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.