GovXRay Scraper — City Government Fiscal Data
Pricing
from $7.00 / 1,000 result scrapeds
GovXRay Scraper — City Government Fiscal Data
Scrape 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
6 days ago
Last modified
Categories
Share
GovXRay Scraper
Scrape city government fiscal-transparency data from GovXRay.com — a "Government Financial X-Ray" covering 240+ major cities across 60+ countries. For each city you get consolidated per-capita public finances stacked across every level of government that applies to it (federal/ national, state/region/province, municipal, and sometimes school boards): spending, revenue, deficit, public debt and assets by tier with credit ratings, a fiscal health score, inter-government transfer flows, and headline metrics from 20 deep-dive modules (economy, housing, healthcare, education, defence, energy, demographics and more). 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, IMF/OECD tables and municipal budget PDFs 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 and public-service quality across cities, and public-finance consultants who need a quick fiscal-health snapshot for many cities at once.
What you get
- Consolidated fiscal picture — total government spending and revenue per capita (USD), the resulting deficit or surplus, broken down by category (Social, Admin, Infrastructure, Education, Healthcare, Income Tax, Property Tax, VAT/Sales, Corporate Tax, and more).
- Public balance sheet — assets, debt and net position per capita, both
consolidated and per government tier, each tier's credit rating (e.g.
AA-,A+) and accounting standard. - Fiscal health score — GovXRay's own letter grade (A+ to F), numeric score, and the four sub-scores (Budget, Debt, Balance Sheet, Economy) that make it up, plus the site's own "what stands out" narrative insights.
- Inter-government transfer flows — how much each tier of government sends to the tier below it, per capita.
- 20 module previews — headline metrics from GovXRay's economy, housing, healthcare, education, defence, energy, sustainability, demographics, transit and other deep-dive sections, in one flat record.
- City vitals — population, area, density, GDP and GDP per capita, both city-proper and metro figures.
- 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.
Antwerp,new_york,Austin) — or leave it empty for a default set of major world cities, or pass["all"]to scrape every city GovXRay covers. - 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, London, Paris, Berlin, Brussels, Antwerp, 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 | "Antwerp" |
region | String | "Flanders" |
country | String | "Belgium" |
populationCity | Number | 530000 |
gdpPerCapitaCity | Number | 113208 |
govHierarchy | Array | ["Belgium", "Flanders (Region)", "Antwerp", "EU"] |
fiscalHealthGrade | String | "D" |
fiscalHealthScore | Number | 39 |
totalSpendingPerCapita | Number | 22906 |
totalRevenuePerCapita | Number | 20463 |
deficitPerCapita | Number | 2443 |
spendingByCategory | Object | {"Social": 5672, "Admin": 4461, ...} |
revenueByCategory | Object | {"Income Tax": 5452, "Property Tax": 3948, ...} |
balanceSheetAssetsPerCapita | Number | 25104 |
balanceSheetDebtPerCapita | Number | 60102 |
balanceSheetTiers | Array | Per-tier assets/debt/net/rating |
transferFlows | Array | Per-tier inter-government transfers |
modules | Object | Headline metrics for 20 deep-dive modules |
financialSnapshotNarrative | String | GovXRay's plain-text summary |
url | String | Source page URL |
scrapedAt | String | ISO 8601 timestamp |
Example output (abridged — real run, Antwerp)
{"city": "Antwerp","citySlug": "antwerp","region": "Flanders","country": "Belgium","url": "https://govxray.com/city/antwerp","scrapedAt": "2026-07-22T14:22:19.202Z","currency": "USD","populationCity": 530000,"populationMetro": 1070000,"gdpCityUsd": 60000000000,"gdpPerCapitaCity": 113208,"govHierarchy": ["Belgium", "Flanders (Region)", "Antwerp", "EU"],"fiscalHealthGrade": "D","fiscalHealthScore": 39,"fiscalHealthScoreMax": 100,"fiscalHealthLabel": "Structural concerns","fiscalHealthSubscores": { "budget": 2, "debt": 15, "balance_sheet": 2, "economy": 20 },"totalSpendingPerCapita": 22906,"spendingByCategory": {"Social": 5672,"Admin": 4461,"Infrastructure": 3286,"Education": 2612,"Healthcare": 2521},"totalRevenuePerCapita": 20463,"revenueByCategory": {"Income Tax": 5452,"Property Tax": 3948,"VAT / Sales": 3895,"Corporate Tax": 1069},"deficitPerCapita": 2443,"balanceSheetAssetsPerCapita": 25104,"balanceSheetDebtPerCapita": 60102,"balanceSheetTiers": [{ "tier": "Municipal", "assetsPerCapita": 2727, "debtPerCapita": 3636, "rating": "A+" },{ "tier": "Region", "assetsPerCapita": 4545, "debtPerCapita": 11364, "rating": "AA-" },{ "tier": "Federal", "assetsPerCapita": 15000, "debtPerCapita": 43182, "rating": "AA" }],"financialSnapshotNarrative": "Antwerp produces $60B of GDP, representing 20.7% of Belgium's economy. Government spending equals USD 25,604 per resident, while tax revenue is USD 20,463, resulting in a USD 2,443 per-capita deficit."}
How it works
GovXRay's city pages are fully server-rendered — every figure, including the 20 module previews, is present in the raw HTML of a plain page load. There is no hidden JSON API to call. The actor:
- Reads the live
sitemap.xmlto build the current city index (so newly added cities are picked up automatically, without a code change). - 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 section labels (Population, Fiscal Health, Spending, Revenue, Balance Sheet, Transfer Flows, Deep Dive Modules, Data Quality) to pull out structured fields.
This was verified against cities with different government structures (3-tier Belgium, 4-tier US including school boards, and non-Western examples) to make sure the parser doesn't assume a fixed tier count.
Cost estimate
One Bright Data Web Unlocker request per city page (plus one for the sitemap 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.
Limitations
- Covers the city root/scorecard page only — GovXRay also has 26 deeper per-module pages per city (e.g. a full economy or housing breakdown with many more metrics); this actor surfaces each module's 2-3 headline metrics rather than crawling all 26 sub-pages.
- GovXRay's own data coverage varies by city — some cities have fewer fiscal-audit metrics or a shorter government hierarchy than others; the actor reflects whatever GovXRay currently publishes and doesn't fill gaps.
- Figures are GovXRay's own estimates/aggregations from public sources (OECD, IMF, national accounts, curated municipal audits) — treat this as a research and comparison tool, not an official audited financial statement.
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.