{
    "name": "San Antonio Data Centers API",
    "description": "Data center sites in San Antonio, Texas, identified from the City building permit record. The record has no category for a data center, so the count is a floor and the rejected candidates are published alongside it.",
    "meta": {
        "built": "2026-09-11T19:30:22+00:00",
        "retrieved": "2026-09-11",
        "source": "City of San Antonio, building permits issued",
        "window": {
            "from": "2020-07-20",
            "to": "2026-09-04",
            "permits_total": 508998
        }
    },
    "totals": {
        "sites": 19,
        "permits_at_sites": 787,
        "with_value": 129,
        "candidates": 71,
        "rejected": 52,
        "named_dc_work": 12,
        "rejected_by_type": 13,
        "pipeline_sites": 0,
        "clustered": 5,
        "cluster_m": 1200,
        "found_by_vocabulary_only": 1
    },
    "endpoints": {
        "sites": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/sites",
        "rejected": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/rejected",
        "operators": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/operators",
        "quality": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/quality",
        "pipeline": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/pipeline",
        "sites_csv": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/sites.csv",
        "openapi": "https:\/\/brandshyp.org\/api\/v1\/data-centers\/openapi.json"
    },
    "documentation": "https:\/\/brandshyp.org\/san-antonio-data-centers\/",
    "caveats": [
        "The City publishes its permit record as four separate resources and only one of them is called PERMITS ISSUED. Reading that one alone covers 2025 onward, 137,425 permits of 505,722. This tool reads the issued record in full, 2020-07-20 to the retrieval date, and reads applications separately as a pipeline that is never counted as a site.",
        "The two halves of the issued record do not agree with each other. One stores an empty field as a real null and the other stores the four-character word NULL, on 356,352 rows, including 8,887 addresses; and one stores the issue date as a timestamp where the other stores text. Nothing in the dataset says so.",
        "The permit record has no category for a data center. There is no occupancy type, use code or flag, so the only handle is PROJECT NAME, a free-text field somebody typed. Everything else here follows from that.",
        "The 19 sites are a FLOOR, not a count of data centers in San Antonio. The largest projects in this record are permitted under codenames that say nothing about what the building is, and anything named that way is invisible to a name search.",
        "Floor areas are never summed. One project files many permits and the SAME floor area is stamped on several of them, so adding them up multiplies one building by the number of forms it generated.",
        "Valuations are never summed, for the same reason, and most permits carry none at all. A declared valuation is what an applicant wrote on a form, not a construction cost and not an investment figure.",
        "A permit is a permission, not a building. It does not prove anything was built, finished, or is running.",
        "Nothing in this record says how much electricity or water any of these sites uses. Those figures are not in the permit file at all, and no amount of analysis of it will produce them.",
        "The same site appears under more than one address spelling, and the spellings do not carry the same information. 5207 Rogers Rd is written three ways here, including two different ZIP codes, and one site is recorded both with and without its street suffix with only one version carrying coordinates. Spellings that share a house number and street are counted as one site; the house number is never touched, so 5200 and 5207 Rogers Rd stay two sites.",
        "The two coordinate columns hold two different coordinate systems. Some permits give a site in degrees and others give the same site in survey feet, and converted they agree to within a meter. The record is not wrong, it is inconsistent, and plotting the raw column without checking throws the survey-feet rows off the map.",
        "Sites are found by name and then counted by address, because a name search alone under-reports badly: the busiest site here was found by 46 name-matched permits and actually carries far more.",
        "One company name can cover two kinds of building. Amazon holds permits here both for data centers, as AWS, and for a fulfillment center and delivery stations, as Amazon, and every one of those addresses carries commercial permits. Where an operator is shown by this record to build both, a site is counted only if the record also names data center work at that address.",
        "A company name matched as a substring catches other words. Searching for aws without a word boundary matches SAWS, the water utility, which in this file is 220 permits at 135 addresses. Every keyword that occurs inside another word is matched as a whole word instead, and the operators that were searched for and not found are published with their zero."
    ],
    "source": {
        "name": "City of San Antonio, building permits issued",
        "dataset": "https:\/\/data.sanantonio.gov\/dataset\/building-permits",
        "licence": "City of San Antonio open data. A public record; check the portal for its terms."
    }
}