GovXRay Scraper — City Government Fiscal Data
Under maintenancePricing
from $7.00 / 1,000 result scrapeds
GovXRay Scraper — City Government Fiscal Data
Under maintenanceScrape consolidated government finance profiles for 240+ world cities from GovXRay.com: spending & revenue per capita, deficit, public debt & assets by government tier, credit ratings, fiscal health scores, and 20 module previews (economy, housing, healthcare, education). No login, no cookies.
Pricing
from $7.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
GovXRay Scraper
Scrape city government fiscal-transparency data from GovXRay.com — a "Government Financial X-Ray" covering 118 cities across 19 countries. For each city you get per-capita public finances broken down by government tier (federal/national, state/region, municipal, and sometimes social security), a fiscal health grade, spending and revenue by category (where GovXRay has that data connected), and the site's own "what stands out" narrative callouts. No login, no cookies.
Why use this actor?
GovXRay does the hard work of normalizing public finance data that otherwise lives scattered across national statistics offices, Eurostat/OECD tables and municipal budget documents into one consistent per-capita view per city. This actor turns that into structured records you can drop into a spreadsheet, a BI tool, or a research database.
Typical users: policy researchers and think tanks, journalists covering municipal finance or debt, urban economists, relocation and site-selection analysts comparing tax burden across cities, and public-finance consultants who need a quick fiscal-health snapshot for many cities at once.
What you get
- Municipal-tier figures — revenue and spending per capita for the city government alone, plus the resulting surplus/deficit, fiscal year and accounting status (audited vs. running budget).
- Multi-tier consolidation — where GovXRay has full government-tier data connected for a city, also the consolidated per-resident view (what a resident pays in and receives across every displayed tier), spending broken down by category (Social, Santé, Éducation, ...) and revenue broken down by category (Impôts sur le revenu, Tarifs & services, ...).
- Balance Sheet by tier — revenue, spending and balance per capita for every government tier that applies to the city (national, sub-national "dont ..." breakdowns, social security, municipal), each with its own fiscal year, accounting status and source.
- Fiscal health score — GovXRay's own letter grade (A+ to F), the composite score and how many scoring domains are connected, plus the site's own "what stands out" highlights.
- Module directory — the 29-module deep-dive index GovXRay tracks for every city (grouped by category: Finances publiques, Économie, Démographie, ...), plus how many are actually written (v17 build stats).
- City vitals — population, area/density (where connected), country GDP per capita (World Bank, USD), and the government-tier chain that applies to the city.
- No login, no cookies — nothing to configure beyond a list of cities.
How to scrape GovXRay data
- Add the actor to your Apify account.
- Enter a list of Cities (names or GovXRay slugs, e.g.
Berlin,new_york_city,Copenhague) — or leave it empty for a default set of major world cities, or pass["all"]to scrape every city GovXRay covers (118). - Set Max Cities to how many you want in this run.
- Provide a Bright Data API key (see below) or set the
BRIGHT_DATA_API_KEYenvironment variable. - Run it. Download the results as JSON, CSV, Excel, or feed them to an API.
GovXRay is proxied through Cloudflare, so the actor routes its requests
through the Bright Data Web Unlocker to fetch
pages reliably. You need a Bright Data account with a Web Unlocker zone; the
key goes in the brightDataApiKey input (kept secret) or the
BRIGHT_DATA_API_KEY environment variable. The pages themselves are plain
server-rendered HTML (no browser rendering needed), so this is a cheap,
fast fetch per city.
Input
| Field | Type | Required | Description |
|---|---|---|---|
cities | Array of strings | No | City names or GovXRay slugs to scrape (default: 10 major world cities). Pass ["all"] to scrape every city GovXRay covers. |
maxResults | Integer | No | Maximum number of cities to scrape in this run (default: 20). |
brightDataApiKey | String | Yes | Bright Data Web Unlocker API key. Falls back to the BRIGHT_DATA_API_KEY environment variable. |
proxyConfiguration | Object | No | Apify proxy settings for auxiliary requests. |
Leave everything empty and the actor scrapes a default set of major cities
(New York City, London, Paris, Berlin, Copenhague, Zürich, Tokyo, Sydney,
Toronto, Madrid), so an empty input {} still returns data.
Output
Each result is one city's fiscal profile. Key fields:
| Field | Type | Example |
|---|---|---|
city | String | "Copenhague" |
country | String | "Danemark" |
currency | String | "DKK" |
population | Number | 659350 |
cityOnlyRevenuePerCapita / cityOnlySpendingPerCapita | Number | 93112 / 88869 |
govHierarchy | Array | ["Danemark (tous paliers)", "Copenhague"] |
fiscalHealthGrade | String | "C" |
fiscalHealthCompositeScore | Number | 64 |
consolidatedRevenuePerCapita / consolidatedSpendingPerCapita | Number | 279308 / 280583 (only where GovXRay has multi-tier data connected) |
spendingByCategory | Object | {"Social": 103108, "Administration & autres programmes": 69848, ...} |
revenueByCategory | Object | {"Impôts sur le revenu": 100628, "Impôts fonciers & locaux": 67099, ...} |
balanceSheetTiers | Array | Per-tier revenue/spending/balance per capita, fiscal year, status, source |
highlights | Array | GovXRay's "what stands out" callouts as {label, detail} pairs |
moduleCategories | Object | The 29-module directory grouped by category |
modulesWrittenCount / modulesTotalCount | Number | 26 / 29 |
url | String | Source page URL |
scrapedAt | String | ISO 8601 timestamp |
Example output (abridged — real run, Berlin, 2026-08-07)
{"city": "Berlin","citySlug": "berlin","country": "Allemagne","url": "https://govxray.com/city/berlin/","currency": "EUR","population": 3685265,"cityOnlyRevenuePerCapita": 10044,"cityOnlySpendingPerCapita": 10874,"cityOnlyFiscalYear": 2024,"cityOnlyStatus": "audité","countryGdpPerCapitaUsd": 60496,"govHierarchy": ["Allemagne (tous paliers)", "Berlin"],"fiscalHealthGrade": "D","fiscalHealthCompositeScore": 39,"fiscalHealthCompositeScoreMax": 100,"fiscalHealthDomainsConnected": "6/6","balanceSheetTiers": [{ "tier": "Allemagne (tous paliers)", "isSubTier": false, "revenuePerCapita": 24215, "spendingPerCapita": 25594, "fiscalYear": 2024, "status": "audité", "source": "API" },{ "tier": "dont administration centrale", "isSubTier": true, "revenuePerCapita": 6941, "spendingPerCapita": 7670, "fiscalYear": 2024, "status": "audité", "source": "PAYS · Eurostat" },{ "tier": "Berlin", "isSubTier": false, "revenuePerCapita": 10044, "spendingPerCapita": 10874, "fiscalYear": 2024, "status": "audité", "source": "document" }],"highlights": [{ "label": "Périmètre municipal en déficit (8 % des recettes)", "detail": "Solde -3,059 M ÷ 3,685,265 hab = −EUR 830/hab — exercice 2024, périmètre de la carte." }],"modulesWrittenCount": 26,"modulesTotalCount": 29,"namedGapsCount": 132}
How it works
GovXRay's city pages are fully server-rendered — every figure is present in the raw HTML of a plain page load, French-only, no hidden JSON API. The actor:
- Reads the live
cities.jsonindex (replacedsitemap.xmlin the site's August 2026 "v17" relaunch) to build the current city list, filtering out the handful of non-city navigation pages the same file also lists. - Fetches each requested city's page through the Bright Data Web Unlocker.
- Converts the HTML into an ordered list of text blocks that mirrors the
page's visual structure, then walks it with a small parser anchored on
known French section labels (Population, Fiche de santé, DÉPENSES,
RECETTES, Balance Sheet, Ce qui ressort, Les 29 modules) to pull out
structured fields. It also reads the fiscal-health composite score out
of a
titleattribute the visible text doesn't carry.
Two page layouts exist depending on how much government-tier data GovXRay
has connected for a given city: cities with full consolidation show a "tous
paliers" (all tiers) resident view and a spending/revenue category
breakdown; cities with only municipal-level data show a "ville seule"
(city-only) resident view and no category breakdown. The parser detects and
handles both — consolidatedRevenuePerCapita, consolidatedSpendingPerCapita
and spendingByCategory/revenueByCategory are simply absent for
city-only cities, since GovXRay itself doesn't publish that data for them.
Verified against New York City, Copenhague and Zürich (full consolidation)
and Berlin (city-only) — 96-100% field coverage on all four.
Cost estimate
One Bright Data Web Unlocker request per city page (plus one for
cities.json per run). A run of 50 cities is roughly 51 requests. Actual
cost depends on your Apify plan and your Bright Data Web Unlocker usage.
Usage cost only settles after the run reports SUCCEEDED — reading the
dataset mid-run will undercount what the run actually cost.
Limitations
- Covers the city root/scorecard page only — GovXRay also has deeper per-module pages per city (a full economy or housing breakdown with many more metrics); this actor surfaces the module directory rather than crawling all of them.
- GovXRay's own data coverage varies by city — some cities only have municipal-tier figures connected, with no consolidated multi-tier view or category breakdown; the actor reflects whatever GovXRay currently publishes and doesn't fill gaps.
- Figures are GovXRay's own estimates/aggregations from public sources (Eurostat, national accounts, curated municipal audits) — treat this as a research and comparison tool, not an official audited financial statement.
- GovXRay dropped a number of cities (including Antwerp and Brussels) in
its August 2026 relaunch; only the 118 cities in the live
cities.jsonindex are scrapeable.
Related scrapers
Studio AMBA also publishes scrapers for other European/global regulatory
and public-data sources: belgian-procurement-scraper,
ted-eu-procurement-scraper, eurlex-scraper, handelsregister-scraper,
and kbo-enrichment for company/registry data alongside government data.