Start in two minutes
- Get the Ultra plan, then create a key on the Agents page. The key is shown once; keep it in an environment variable.
- Send it as a Bearer token. Every answer is JSON.
curl -H "Authorization: Bearer $SPEZIA_API_KEY" \ "https://spezia.ai/api/v1/projects?state=VA&status=active&limit=25"
curl -H "Authorization: Bearer $SPEZIA_API_KEY" \
"https://spezia.ai/api/v1/projects/{key}"Free sample, no account
Up to 15 active projects in Virginia, from the latest research run: name, city, size, stage, phase, the four readiness signs and the date each was last checked. The full data adds the developer, every company named, the estimated value, funding, filings and every source.
List projects
GET /api/v1/projects returns one page of projects, active ones first, then the largest. Filters:
- state
- Two-letter codes or state names, comma separated. All states when left out. state=VA,TX
- status
- One of under_construction, approved, announced, operational, blocked_or_paused, unknown, active, all. "active" means under construction or approved. Default all. status=active
- min_mw
- Only projects of at least this many megawatts. min_mw=100
- developer
- Part of the owner or developer's name, any case. developer=aligned
- updated_since
- Only projects a source reported on this day or later, YYYY-MM-DD. Use it to sync changes. updated_since=2026-11-01
- limit
- Projects per page, 1 to 200. Default 50. limit=100
- offset
- Where the page starts. Use next_offset from the last page; it is null on the last one. offset=100
An unknown parameter or a bad value is refused with a message, so a typo never returns the whole dataset by mistake.
{
"data": [
{
"key": "example-campus-loudoun-va",
"name": "Example Campus, Building 1",
"url": "https://spezia.ai/app/projects/example-campus-loudoun-va",
"developer": "Example Developer LLC",
"tenants": [
"Example Cloud Inc."
],
"utilities": [
"Example Power Co."
],
"city": "Ashburn",
"state": "VA",
"status": "under_construction",
"status_label": "Under construction",
"capacity_mw": 300,
"estimated_value_usd": 2500000000,
"phase": "Structure",
"main_bottleneck": "Power",
"readiness": {
"utility_contract": {
"stage": "signed",
"label": "Agreement signed",
"basis": "source",
"date": "2026-06-02",
"source": {
"url": "https://example.com/filings/esa",
"title": "Utility filing",
"quote": "signed an electric service agreement",
"published_at": "2026-06-02"
}
},
"major_equipment": {
"stage": "none",
"label": "No public sign",
"basis": "none",
"date": null,
"source": null
},
"grid_connection": {
"stage": "queued",
"label": "In queue or study",
"basis": "likely",
"date": null,
"source": null
},
"local_approval": {
"stage": "approved",
"label": "Approved",
"basis": "status",
"date": null,
"source": null
}
},
"companies": [
{
"name": "Example Developer LLC",
"key": "example-developer",
"role": "developer",
"role_label": "Developer or owner"
},
{
"name": "Example Cloud Inc.",
"key": "example-cloud",
"role": "tenant",
"role_label": "Tenant or end user"
},
{
"name": "Example Power Co.",
"key": "example-power",
"role": "utility",
"role_label": "Utility"
},
{
"name": "Example Builders",
"key": "example-builders",
"role": "general_contractor",
"role_label": "General contractor"
}
],
"source_count": 7,
"last_reported_at": "2026-11-09T14:00:00.000Z"
}
],
"pagination": {
"total": 1,
"limit": 50,
"offset": 0,
"next_offset": null
},
"meta": {
"as_of": "2026-11-09",
"attribution": "Data from Spezia, researched from public records and reports; each fact links to its source. FAA and EPA records are U.S. government works. Use under the Spezia data license."
}
}Fields
- key
- Spezia's id for the project. Use it to fetch the full file.
- name
- The project's name in the sources.
- url
- The project file in the Spezia app.
- developer
- The owner or developer named in the sources, or null.
- tenants
- Tenants or end users named in the sources.
- utilities
- Electric utilities named in the sources.
- city
- City or county seat, or null.
- state
- Two-letter state code.
- status
- One of: under_construction, approved, announced, operational, blocked_or_paused, unknown.
- status_label
- The status in plain words.
- capacity_mw
- Planned capacity in megawatts as the sources state it, or null.
- estimated_value_usd
- Reported investment in U.S. dollars, or null.
- phase
- Spezia's read of the construction phase now, or null.
- main_bottleneck
- Spezia's read of what holds the project back most, or null.
- readiness
- Four signs that the project is real and moving: utility contract, major equipment, grid connection, local approval. Each gives its stage, how it was decided and the quote behind it.
- companies
- Every company named on the project, with its role.
- source_count
- How many sources the project file rests on.
- last_reported_at
- When a source last reported on the project.
One project
GET /api/v1/projects/{key} returns the same fields plus everything Spezia has on the project. A signal Spezia has not matched to the project is null, never a guess.
- sources
- Every fact's quote and the page it came from.
- funding
- Who pays whom: equity, debt, contracts, leases and incentives, each with its source.
- filings
- Permits and public filings found for the project: zoning, site plans, air, water, utility.
- facts
- Design, power, cooling, schedule and workforce details, each with its source.
- cranes
- Cranes and tall structures filed with the FAA at the site: work dates, heights and builders. Null when none matched.
- epa
- EPA air permits (generators, turbines) and construction stormwater permits at the site. Null when none matched.
- videos
- Build progress read from public drone and news videos of the site, each linked. Null when none counted.
- satellite
- The latest satellite comparison of the site. Coordinates only for a site placed by hand.
{
"data": {
"key": "example-campus-loudoun-va",
"name": "Example Campus, Building 1",
"url": "https://spezia.ai/app/projects/example-campus-loudoun-va",
"developer": "Example Developer LLC",
"tenants": [
"Example Cloud Inc."
],
"utilities": [
"Example Power Co."
],
"city": "Ashburn",
"state": "VA",
"status": "under_construction",
"status_label": "Under construction",
"capacity_mw": 300,
"estimated_value_usd": 2500000000,
"phase": "Structure",
"main_bottleneck": "Power",
"readiness": {
"utility_contract": {
"stage": "signed",
"label": "Agreement signed",
"basis": "source",
"date": "2026-06-02",
"source": {
"url": "https://example.com/filings/esa",
"title": "Utility filing",
"quote": "signed an electric service agreement",
"published_at": "2026-06-02"
}
},
"major_equipment": {
"stage": "none",
"label": "No public sign",
"basis": "none",
"date": null,
"source": null
},
"grid_connection": {
"stage": "queued",
"label": "In queue or study",
"basis": "likely",
"date": null,
"source": null
},
"local_approval": {
"stage": "approved",
"label": "Approved",
"basis": "status",
"date": null,
"source": null
}
},
"companies": [
{
"name": "Example Developer LLC",
"key": "example-developer",
"role": "developer",
"role_label": "Developer or owner"
},
{
"name": "Example Cloud Inc.",
"key": "example-cloud",
"role": "tenant",
"role_label": "Tenant or end user"
},
{
"name": "Example Power Co.",
"key": "example-power",
"role": "utility",
"role_label": "Utility"
},
{
"name": "Example Builders",
"key": "example-builders",
"role": "general_contractor",
"role_label": "General contractor"
}
],
"source_count": 7,
"last_reported_at": "2026-11-09T14:00:00.000Z",
"sources": [
{
"field": "capacity_mw",
"url": "https://example.com/news/example-campus",
"title": "Example Campus breaks ground",
"quote": "a 300-megawatt campus",
"published_at": "2026-09-14"
}
],
"funding": [],
"filings": [],
"facts": [],
"cranes": {
"newest_faa_file": "2026-11-01",
"summary": {
"filings": 1,
"cranes": 1,
"active_now": 1,
"first_start": "2026-10-01",
"latest_start": "2026-10-01",
"latest_end": "2027-03-31",
"max_height_ft": 210,
"builders": [
"Example Builders"
]
},
"filings": [
{
"asn": "2026-AEA-0000-OE",
"url": "https://oeaaa.faa.gov/",
"type": "Crane",
"height_ft": 210,
"work_start": "2026-10-01",
"work_end": "2027-03-31",
"received": "2026-08-20",
"status": "Determined",
"builders": [
"Example Builders"
]
}
]
},
"epa": null,
"videos": null,
"satellite": null
},
"meta": {
"as_of": "2026-11-09",
"attribution": "Data from Spezia, researched from public records and reports; each fact links to its source. FAA and EPA records are U.S. government works. Use under the Spezia data license."
}
}How readiness is decided
Each readiness sign says how it was decided. source means a quote from a public record or report, linked. status follows from the project's tracked status. likely is Spezia's read of the reports with no quote to show. none means no public sign yet.
Limits
- Each key may make 6,000 calls a day on Ultra and 30,000 on Enterprise, shared with the same key's calls from your AI agent. The count resets at midnight UTC.
- Up to 60 requests a minute per key.
- Every answer carries X-RateLimit-Limit and X-RateLimit-Remaining; a 429 carries Retry-After in seconds.
- The research is re-run every week, so polling more than a few times a day returns the same data. Use updated_since to fetch only what changed.
Errors
Errors come back as JSON with a code and a plain message:
{
"error": {
"code": "bad_request",
"message": "Unknown parameter \"stat\". Use: state, status, ..."
}
}- 400 bad_request
- A parameter is unknown or has a bad value. The message says which.
- 401 unauthorized
- No key, a revoked key, or an account that is not active.
- 403 forbidden
- The key's account is not on a plan that includes the API.
- 404 not_found
- No project with that key.
- 429 rate_limited
- More than 60 requests in a minute. Wait for Retry-After.
- 429 daily_limit
- The key's calls for the day are used up. They reset at midnight UTC.
- 503 unavailable
- The data could not be read just now. Retry after a minute.
Spreadsheets without code
On Ultra, the Projects page in the app downloads whatever you have filtered, for Excel or as CSV. Same data, same columns, no key needed.
What you may do with the data
Use it inside your business, and share findings, charts and short extracts with credit to Spezia. Do not resell or republish the raw dataset. The full terms are in the data license.
What it does not have
- Not every project has every field. Capacity, value and dates are what the sources state; null means no source said.
- Site coordinates are shared only for sites Spezia placed by hand. Sites located with open map data keep their coordinates private, as that data's license asks.
- No grid operator or planned operating year field yet: the sources rarely state them in a form Spezia can check.