Decidim Participation Extractor: Proposals, Processes, Meetings
Pricing
from $0.35 / 1,000 records
Decidim Participation Extractor: Proposals, Processes, Meetings
Extract processes, assemblies, proposals, results or meetings from any Decidim participatory-democracy site as JSON rows with state, votes, dates and page URL. $0.0005 per record (free plan).
Pricing
from $0.35 / 1,000 records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Decidim Participation Extractor
Extract participatory-democracy data from any Decidim instance (city, regional and EU government deployments) through its public GraphQL API: participatory processes, assemblies, proposals, results and meetings, one flat JSON row each. For civic-tech teams, policy researchers, journalists and govtech analysts. Price: $0.0005 per record on the free plan ($0.50 per 1,000), lower on higher Apify plans; no start fee.
Empty {} input reads https://meta.decidim.org (the Decidim project's own instance) in participatoryProcesses mode and returns real rows (a real run returned 15 records, about $0.0075). Only Decidim hosts work; other platforms fail fast with a clear error and no fabricated output.
Pick the right mode
| Mode | Returns | Level |
|---|---|---|
participatoryProcesses (default) | processes (budgets, plans, consultations) | space |
assemblies | assemblies / councils | space |
proposals | citizen proposals with state and vote count | component |
results | accountability results with progress % | component |
meetings | meetings with times and address | component |
Example input
{"decidimUrl": "https://meta.decidim.org","mode": "proposals","locale": "en","maxRecords": 20}
Example output
Real row (mode: "proposals", selected fields):
{"decidimUrl": "https://meta.decidim.org","mode": "proposals","id": "12040","reference": "MDC-PROP-2017-09-12040","state": "finished","voteCount": 9,"title": "Reconeixement automàtic de links","titleLocale": "ca","createdAt": "2017-09-05T14:20:20+02:00","processId": "40","processSlug": "roadmap","componentId": "122","pageUrl": "https://meta.decidim.org/processes/roadmap/f/122/proposals/12040"}
Output fields
decidimUrl, mode, id, slug, pageUrl, reference, title, titleLocale, subtitle, shortDescription, body, state, progress, voteCount, address, closed, promoted, createdAt, updatedAt, publishedAt, answeredAt, startDate, endDate, startTime, endTime, componentsCount, components (with withComponents: true), processId, processSlug, componentId. Fields not applicable to a mode are null.
Limits
- Cost = records x $0.0005 (free plan).
maxRecordsdefaults to 2000 (about $1.00); use 5-20 for a first run on a new instance. - Some large instances block cloud IPs (403) or time out during component discovery; the run then fails with a clear error rather than returning partial data.
- Component modes search participatory processes only (not assemblies).
pageSizeis capped near 100.
Use from an AI agent / API
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("datamule/decidim-participation-extractor").call(run_input={"decidimUrl": "https://meta.decidim.org", "mode": "proposals", "maxRecords": 20},max_total_charge_usd=0.05, # hard cost cap for the run)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
MCP (Claude, Cursor, any MCP client): add https://mcp.apify.com/?tools=datamule/decidim-participation-extractor as a remote MCP server with your Apify token as a Bearer header. The Actor then appears as one tool whose arguments are the input fields above; call it with the example input.
Agent rules: pass JSON matching the input schema; {} is valid and returns real default data; always set a maximum charge per run; read results from the run's default dataset (one row per result).
FAQ
Does it work on any Decidim site? Yes, if the instance exposes its public /api GraphQL endpoint and does not block cloud IPs.
Why is title in another language? The requested locale is missing, so it falls back to the first available translation; see titleLocale.
What does {} do? Lists participatory processes of meta.decidim.org.
Key behaviours (things the Decidim API decides)
- Translated text with fallback.
title/subtitle/bodyare translated objects, not strings. On a Catalan or Finnish instanceenis oftennull, so the actor falls back to the first available translation and tells you which locale it used intitleLocale. Rows are keyed on the always‑presentid. - Components are reached through inline fragments.
proposals/results/meetingsare components of a participatory process, not root fields — the actor discovers them and walks each component's Relay cursor connection. - Not every host is Decidim. The actor first probes
{ decidim { version } }; a host that is unreachable, Cloudflare‑gated (403 / HTML), or a different platform (e.g. CONSUL) fails fast and never emits a fabricated empty result.
Every row has a clickable pageUrl (the "Page link" column in the Output table) that
opens the record on the Decidim site: /processes/<slug> or /assemblies/<slug> for
spaces, /processes/<processSlug>/f/<componentId>/<mode>/<id> for proposals, results
and meetings. It is built from the ids already in the row, so it costs no extra request.
It is null when the instance did not return the slug it needs. Component links always
use /processes/, because the Actor finds proposals, results and meetings under
participatory processes (not assemblies).
Pricing
Pay‑per‑event: you are billed per record (one participatory process, proposal, result, assembly, or meeting emitted).
Your run's maximum cost is respected. The Actor checks the budget before its first Decidim request and before every page, stops when the next record would go over the limit, and keeps what was already delivered. You are only charged for records that land in your dataset. If a page request fails mid-run, the delivered records stay but the run is marked failed.
Use cases
Civic‑transparency dashboards · participatory‑budgeting analytics · policy research · govtech monitoring · journalism on public participation · comparative studies across the ~400‑instance Decidim ecosystem.