DAO Governance Scraper (Snapshot Proposals & Votes)
Pricing
from $6.80 / 1,000 results
DAO Governance Scraper (Snapshot Proposals & Votes)
Scrape DAO governance from Snapshot: spaces, proposals and votes. Filter by space, state, date, author and min votes. Export space profiles, proposal titles/choices/scores/quorum and per-voter choice, voting power and timestamp. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Share
DAO Governance Scraper (Snapshot Proposals & Votes)
Here is one real result, with every field the actor returns in proposals mode (body trimmed to the first 200 characters for length; all other values are exactly as returned):
{"recordType": "proposal","spaceId": "ens.eth","spaceName": "ENS","proposalId": "0x943e585d1a4996525c5c7d229401d604ea56fe08c2c9c615c44f048ba42487b7","title": "[7.1] [Social] SPP3: Marketplace RFP","body": "# Summary - SPP3 concluded with five selections. **The provider selected for the marketplace and revenue vertical declined its award,** leaving that vertical unfilled and **$1,560,284** of the authori ...[trimmed]","proposalType": "basic","state": "closed","author": "0x1D5460F896521aD685Ea4c3F2c679Ec0b6806359","created": "2026-07-14T00:15:15.000Z","start": "2026-07-14T00:15:15.000Z","end": "2026-07-19T00:15:15.000Z","snapshotBlock": "25527225","choices": ["For", "Against", "Abstain"],"scores": [1191365.5341689042, 156420.0868523988, 66836.54296485189],"scoresByChoice": "For: 1191365.5341689042 | Against: 156420.0868523988 | Abstain: 66836.54296485189","topChoice": "For","topChoiceScore": 1191365.5341689042,"scoresTotal": 1414622.1639861548,"votesCount": 67,"quorum": 0,"quorumReached": null,"network": "1","link": "https://snapshot.box/#/s:ens.eth/proposal/0x943e585d1a4996525c5c7d229401d604ea56fe08c2c9c615c44f048ba42487b7","aiSummary": "The proposal sought to run an open, scoped RFP for a live, revenue-generating ENS marketplace after the initially selected provider declined their award. The proposal passed with a strong majority.","aiExtract": {"proposedAction": "Run an open, scoped RFP for a live, revenue-generating ENS marketplace, funded from the budget already authorized for SPP3.","outcome": "passed","winningChoice": "For","fundingAmount": "500000","beneficiary": null},"aiCategory": "grants","aiTopics": ["marketplace", "RFP", "funding", "ENS", "revenue-generating"],"source": "Snapshot","observedAt": "2026-08-14T07:04:10.950Z","error": null}
The most complete DAO governance scraper available. It returns every field Snapshot exposes for spaces, proposals and votes, including full vote tallies per choice, voting power, quorum and links, plus opt-in AI summaries, outcome extraction and categorization, and gives you state, author, date, vote and keyword filters to target exactly the governance records you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads DAO governance data from Snapshot in one of three modes. spaces returns DAO profiles for the space IDs you list. proposals returns proposals for those spaces, with full vote tallies, voting power per choice, quorum and outcome. votes returns individual votes, either for named proposal IDs or from the recent proposals of the given spaces. Filters for state, author, date range, minimum votes, minimum voting power and title/body keyword narrow the proposals returned. Missing source values are returned as null, never invented.
Three opt-in AI add-ons (proposals mode only) attach a plain-English proposal summary, structured outcome and voting extraction (proposed action, outcome, winning choice, funding amount, beneficiary), and a category with topic tags. They are off by default and only run for paying Apify users.
Quickstart
Open the actor, paste this into the input, and press Run. It returns two closed ENS proposals with all three AI add-ons.
{"mode": "proposals","spaceIds": ["ens.eth"],"proposalState": "closed","maxItems": 2,"withSummary": true,"withExtract": true,"withCategorize": true}
Space IDs are the DAO's Snapshot handle (for example uniswapgovernance.eth, ens.eth, aavedao.eth). Add several to cover multiple DAOs in one run. Default maxItems is 40.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | enum | no | proposals | What to scrape: spaces (DAO profiles), proposals, or votes. |
spaceIds | string[] | no | ["uniswapgovernance.eth"] | Snapshot space IDs (DAO handles). Used by all modes. |
proposalIds | string[] | no | (none) | In votes mode, pull votes for these specific proposal IDs. If omitted, votes come from the recent proposals of the given spaces. |
proposalState | enum | no | all | Filter proposals by state: all, active, closed, or pending. Applies to proposals and votes modes. |
author | string | no | (empty) | Only include proposals created by this wallet address. |
dateFrom | string | no | (empty) | Only include proposals created on or after this date (ISO date like 2026-01-01, or a unix timestamp). |
dateTo | string | no | (empty) | Only include proposals created on or before this date (ISO date, or a unix timestamp). |
minVotes | integer | no | (none) | In proposals mode, only keep proposals with at least this many votes. |
minScoresTotal | number | no | (none) | In proposals mode, only keep proposals whose total voting power is at least this value. |
titleSearch | string | no | (empty) | In proposals mode, only keep proposals whose title or body contains this case-insensitive keyword. |
maxItems | integer | no | 40 | Maximum records to collect across the whole run. |
withSummary | boolean | no | false | Paid add-on (proposals mode). AI summary of each proposal and its outcome. Billed per summary. Disabled on free plans. |
withExtract | boolean | no | false | Paid add-on (proposals mode). AI extracts proposed action, outcome, winning choice, funding amount and beneficiary. Billed per extraction. Disabled on free plans. |
withCategorize | boolean | no | false | Paid add-on (proposals mode). AI classifies each proposal with a category and topic tags. Billed per classification. Disabled on free plans. |
Output reference
One dataset item per record. The fields below cover proposals mode; spaces and votes modes return their own record shapes (a recordType field identifies each). Types: string, number, integer, boolean, string[], number[], object, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
recordType | string | Record kind: proposal, space, or vote. |
spaceId | string | Snapshot space ID (DAO handle). |
spaceName | string | Human-readable DAO name. |
proposalId | string | Snapshot proposal ID (hash). |
title | string | Proposal title. |
body | string | Full proposal body (markdown). |
proposalType | string | Voting type, for example basic, single-choice. |
state | string | Proposal state: active, closed, or pending. |
author | string | Proposer wallet address. |
created | string | ISO 8601 creation timestamp. |
start | string | ISO 8601 voting start. |
end | string | ISO 8601 voting end. |
snapshotBlock | string | Snapshot block number for voting power. |
choices | string[] | Voting choices. |
scores | number[] | Voting power per choice, aligned to choices. |
scoresByChoice | string | Human-readable per-choice tally string. |
topChoice | string | Winning choice. |
topChoiceScore | number | Voting power of the winning choice. |
scoresTotal | number | Total voting power cast. |
votesCount | integer | Number of votes. |
quorum | number | Quorum threshold, else 0. |
quorumReached | boolean | true when quorum was reached, else null if not defined. |
network | string | Chain ID the space votes on (for example 1 for Ethereum). |
link | string | Snapshot proposal page URL. |
aiSummary | string | AI proposal summary. null unless withSummary is enabled. |
aiExtract | object | AI outcome extraction {proposedAction, outcome, winningChoice, fundingAmount, beneficiary}. null unless withExtract is enabled. |
aiCategory | string | AI proposal category. null unless withCategorize is enabled. |
aiTopics | string[] | AI topic tags. null unless withCategorize is enabled. |
source | string | Data source label (Snapshot). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"mode":"proposals","spaceIds":["ens.eth"],"proposalState":"closed","maxItems":2,"withSummary":true,"withExtract":true,"withCategorize":true}), with body trimmed for length:
{"recordType": "proposal","spaceId": "ens.eth","spaceName": "ENS","proposalId": "0x943e585d1a4996525c5c7d229401d604ea56fe08c2c9c615c44f048ba42487b7","title": "[7.1] [Social] SPP3: Marketplace RFP","body": "# Summary - SPP3 concluded with five selections. The provider selected for the marketplace and revenue vertical declined its award ...[trimmed]","proposalType": "basic","state": "closed","author": "0x1D5460F896521aD685Ea4c3F2c679Ec0b6806359","created": "2026-07-14T00:15:15.000Z","start": "2026-07-14T00:15:15.000Z","end": "2026-07-19T00:15:15.000Z","snapshotBlock": "25527225","choices": ["For", "Against", "Abstain"],"scores": [1191365.5341689042, 156420.0868523988, 66836.54296485189],"topChoice": "For","topChoiceScore": 1191365.5341689042,"scoresTotal": 1414622.1639861548,"votesCount": 67,"quorum": 0,"network": "1","link": "https://snapshot.box/#/s:ens.eth/proposal/0x943e585d1a4996525c5c7d229401d604ea56fe08c2c9c615c44f048ba42487b7","aiSummary": "The proposal sought to run an open, scoped RFP for a live, revenue-generating ENS marketplace and passed with a strong majority.","aiExtract": {"proposedAction": "Run an open, scoped RFP for a live, revenue-generating ENS marketplace.","outcome": "passed","winningChoice": "For","fundingAmount": "500000","beneficiary": null},"aiCategory": "grants","aiTopics": ["marketplace", "RFP", "funding", "ENS", "revenue-generating"],"source": "Snapshot","observedAt": "2026-08-14T07:04:10.950Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dao-governance-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"mode":"proposals","spaceIds":["uniswapgovernance.eth"],"proposalState":"active","maxItems":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dao-governance-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"mode":"votes","spaceIds":["aavedao.eth"],"maxItems":100}'
Apify CLI:
apify call scrapers_lat/dao-governance-scraper \--input '{"mode":"spaces","spaceIds":["ens.eth","uniswapgovernance.eth"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - Opt-in add-ons. The three AI add-ons (
withSummary,withExtract,withCategorize) are billed as separate events only when they run and succeed, and only in proposals mode. They are off unless enabled on a paid plan. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxItems.
FAQ and troubleshooting
A run returned 0 records. Why?
The space ID was wrong, or the filters matched nothing. Confirm the Snapshot handle (for example ens.eth), loosen proposalState, or widen the date range. Zero-result runs are not charged.
What is the difference between the three modes?
spaces returns DAO profiles, proposals returns proposals with vote tallies, and votes returns individual votes for named proposals or the recent proposals of a space.
How do I find a DAO's space ID?
It is the handle in the DAO's Snapshot URL, for example ens.eth from snapshot.org/#/ens.eth.
Why are the AI fields null?
The AI add-ons are opt-in, proposals-mode only, and run only for paying Apify users. Enable withSummary, withExtract, or withCategorize on a paid plan.
Can I pull votes for one specific proposal?
Yes. Use votes mode and pass the proposal hash in proposalIds.
Is this an official Snapshot tool? No. This actor is independent and reads only data that is publicly available through Snapshot. Use it in accordance with Snapshot's terms.
Related scrapers
- Crypto Airdrops Scraper: active, upcoming and claimable crypto airdrops.
- Crypto Token Unlocks Scraper: token unlock and vesting schedules.
- DeFiLlama Protocols Scraper: DeFi protocol TVL, chains and metrics.
- DexScreener Pairs Scraper: live DEX trading pairs and prices.
- CoinGecko Crypto Scraper: coin prices, market caps and rankings.
- Farcaster Casts Scraper: casts and profiles from the Farcaster network.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Snapshot or any DAO. Accesses only publicly available governance data. Use in accordance with Snapshot's terms of service.
