datacenterpermits.org
Reading this site by machine
Everything on the site is generated from one public sheet. You do not need to scrape a page; take the files. Start with /llms.txt; the full index is /llms-full.txt.
Files
/downloads/ledger-latest.json·.csv— the curated air ledger: one row per air permit, with generator counts, MW, NOx, water and an evidence label per figure. Schema v2, 35 columns./downloads/entities-latest.json·.csv— companies, project LLCs, consultants, contractors, law firms, brokers, utilities, plus public bodies, agencies, dockets and landowner groups. Columns:entity_id, name, kind, roles, aliases, parent_id, state, municipality, website, source_url, last_verified, notes./downloads/relationships-latest.json·.csv— one row per cited edge. Columns:rel_id, from_id, from_kind, to_id, to_kind, relationship, date, status, source_url, source_kind, quote, state, municipality, last_verified./downloads/people-latest.json— officials and officers in a cited public role. Columns:person_id, display_name, public_role, public_role_kind, org_id, role_title, role_source_url, role_start, role_end, last_verified, notes. There are no contact fields. See the naming policy before using this file./graph/<st>/<municipality-slug>/graph.json—{municipality, state, generated, nodes[], edges[]}. Node ids are<kind>:<id>; edges carryid, source, target, relationship, date, status, source_url, source_kind, quote./pulse/<YYYY-MM-DD>/pulse.json— one Data Center Pulse issue:{date, url, source, threads[]}, each thread{title, subreddit, state, url, published, score, matched_site_id, matched_terms, doc_links, excerpt}. No usernames. Issues are listed in/pulse/feed.xml(RSS) and/sitemap-pulse.xml.- Live sheet, any tab as CSV:
https://docs.google.com/spreadsheets/d/1Xnc8Vp19R0Qp5PZQa8qBdXe_uiDY9bLOzQ3dqQ8ZUcg/gviz/tq?tqx=out:csv&sheet=<tab>with tab ∈ledger, changes, sources, states, sites, permits, figures, entities, people, relationships.
ID namespaces
site_id—<st>-<facility-slug>, e.g.pa-qts-salem-qts-data-centers. Never renamed.permit_id—<st>-<permit-number>when the agency issued one (pa-40-00158c), else<st>-<agency>-<agency-id>.entity_id— prefix says what it is:co-company,body-public body,agency-,docket-docket or order,agg-group such as “96 landowners”.person_id—p-<name>-<org>, scoped to one role at one organization; the same person on two bodies is two rows.rel_id— first 10 hex of sha1(from|to|relationship|source_url); stable across rebuilds.
Vocabularies
- Permit
status:anticipated(a tracker placeholder — nothing filed) ·applied·under-review·public-notice·issued·denied·withdrawn·expired·unknown. - Permit
verification:tracker<document<figures— how far a human has read behind the tracker row. - Relationship
status:recorded(a document says it happened) ·pending(a vote, application or transfer not yet decided — never a prediction). - Relationship
source_kind:minutes, roster, permit, notice, tracker, docket, gis, sec, press, developer, official-site, other. Adeveloperclaim always carries a verbatimquote. - Entity
kind:operator, developer, llc-vehicle, consultant, engineer, contractor, equipment, law-firm, broker, utility, lender, investor, body, agency, docket, aggregate, other.rolesis a|-joined subset — a firm can be applicant and contractor. - Figure evidence (ledger):
Permit figure, Official tracker, Developer statement, Press report, Calculated, Not published, Not yet reviewed. “Not published” is a fact about the record, not a missing value.
Rules the data follows
- Every row cites a URL. A relationship without
source_urlcannot be written. - Company names resolve through an exact alias list; nothing is merged by similarity. “Amazon Web Services” and “Amazon Data Services, Inc.” are one entity because a human said so.
- People rows exist only with
public_role = TRUEand a document naming the role; the validator rejects any cell shaped like an email or phone number. Residents and individual land sellers are never rows. - Announced capacity is never mixed with permitted capacity; figures come only from documents, with an evidence label.
- Absence means we have not read that record yet, not that nothing exists.
Page patterns
/companies/<entity_id>/— sites, permits, relationships, aliases;schema.org/Organizationin JSON-LD. A company with a single record carriesnoindexuntil a second appears./graph/<st>/<municipality-slug>/— the relationship table is the page; the drawn graph is a view of the same rows.schema.org/DatasetwithspatialCoverage; noPersonmarkup anywhere on the site./near/<st>/<place>/— sites within 25 miles of a place;Datasetwith coordinates./<st>/#p=<site_id>— deep link to a site on the map.
Corrections
corrections@datacenterpermits.org, or the forms on the about and naming policy pages. Changes are logged with date and reason.