ProtestPulse API
Access real-time global protest data. No API key required for read endpoints. Build dashboards, research tools, or integrate into your applications.
Base URL
https://protestracker.portofcams.comAll endpoints return JSON. No authentication required for GET requests.
/api/protestsList and search protests with pagination and filtering
Parameters
typeFilter by type (LABOR, CLIMATE, POLITICAL, etc.)statusFilter by status (ACTIVE, PLANNED, ENDED)countryFilter by country namesearchFull-text search across title, description, city, countrylimitResults per page (default: 20, max: 100)offsetPagination offset/api/protests/[id]Get full details for a single protest including sources, updates, and images
/api/protests/globeGet all protests formatted for globe/map visualization (lat, lng, size, color)
/api/protests/statsGlobal statistics: totals, by type, by status, countries affected, participants
/api/protests/trendingTop 6 most active protests sorted by intensity and crowd size
/api/countries/[code]Get stats and protests for a specific country
/api/submitSubmit a new protest report for community review
Parameters
titleProtest title (required)descriptionDescription (required)typeProtest type enum (required)countryCountry (required)cityCity (required)sourceUrlSource URL (required)submitterEmailYour email (optional)Embeddable Widgets
Add live protest data to your website with a simple iframe.
Live Ticker
<iframe src="https://protestracker.portofcams.com/embed/ticker" width="100%" height="60" frameborder="0"></iframe>Stats Card
<iframe src="https://protestracker.portofcams.com/embed/card" width="400" height="320" frameborder="0"></iframe>Want More Data?
We aggregate from GDELT, ACLED, RSS feeds, Reddit, and community submissions. Need bulk access or custom feeds? Get in touch.