Public API · v1

Analisa US API

The same open, read-only API every page of Analisa US is built on. No key, no sign-up: versioned, cacheable responses you can pin, revalidate and cite. Automation that needs more can send an API key to use its plan's higher daily allowance.

83 endpointsNo key neededOptional API keysVersioned and immutableJSON, binary, CSV
Base URLhttps://tryanalisa.comOpenAPI 3.1

Quick start

  1. 1Read the catalog and the current dataset version

    curl --compressed 'https://tryanalisa.com/api/v1/meta'
  2. 2Get a county's full history, pinned to that version (cached for a year)

    curl --compressed 'https://tryanalisa.com/api/v1/places/48453?v=<version>'
  3. 3Download a state's largest contracts as CSV

    curl -OJ 'https://tryanalisa.com/api/v1/contracts/export/awards?fy=2025&place=06'

Guide

Overview

Every page of Analisa US is built on this public, read-only HTTP API. No key and no sign-up: send GET requests and cache what you get (an optional API key raises your limits: see Authentication). Responses are JSON unless stated (the map datasets are binary, exports are CSV).

Statistics cover US states, metro areas, counties, and cities and towns (Census Bureau, CDC, EPA, FEMA, BLS, NOAA and more); contracts are federal prime contracts from USAspending.gov and notices from SAM.gov, by place of performance. Grants and other financial assistance, subawards, exclusions and lobbying/PAC activity extend the spending data: read their sections below before combining figures.

Places, levels and GEOIDs

A place is identified by its GEOID, and its level follows from the GEOID's shape. The map datasets and the indicator series serve four levels (state, metro, county, city); which levels each other endpoint accepts is stated on the endpoint.

Metro areas are made of whole counties and can cross state lines; a city can span counties. The GEOID does not encode those links: the metro and county columns of a dataset give each place's primary metro area and, for a city, the county holding most of its residents.

A place's score and ranks are percentiles among the places of its own level: a city's among cities (only those with at least 1,000 residents are scored), a metro area's among metro areas. Scores of different levels are not comparable.

Every value of a dataset has a bit set of data-quality flags (flags). Two of them say a value is not the place's own published figure, and any display of the value should say so.

  • US: the nation.
  • State: 2 digits, the state FIPS code (48).
  • Metro area: M + the 5-digit CBSA code (M12420). The prefix keeps CBSA codes apart from county FIPS codes, which have the same shape.
  • County: 5 digits, state + county FIPS (48453).
  • City or town: 7 digits, state + Census place FIPS (4805000): incorporated places and census-designated places.
  • Flag aggregated (4): a metro area's or state's value that the publisher does not release, rolled up from its counties with the indicator's rollup rule (a sum, or a mean weighted by residents, households or land area).
  • Flag borrowed (256): a city's value that is really its county's (the county in the dataset's county column). It appears only for area-wide measures (areaWide in /api/v1/meta: climate, air, hazards, crime reported by county agencies, provider supply) when the source has no city figure. Label it as the county's, never as the city's.

Versioning and caching

The path carries the API version (/api/v1): fields may be added to a v1 response, never renamed or removed. Data changes daily, so every data response also has a content version: a hash that changes exactly when a reload changes the data.

Read the current version once (version of /api/v1/meta for statistics, of /api/v1/contracts/meta for contracts, of /api/v1/assistance/meta for assistance, or the X-Dataset-Version / X-Data-Version header of any response), then add ?v=<version> to your requests. A URL pinned to the current version never changes and is served immutable for a year; unpinned URLs are fresh for 5 minutes.

Subawards, exclusions and influence responses combine the contracts version with their own sources' versions, so no meta route carries theirs: read it from the X-Data-Version header of a response of the same family. Congress responses carry version of /api/v1/congress/meta, except committees, districts and members' money, which add the contracts or influence version; elections and ballot counts have their own: read those from the header too.

  • Send If-None-Match with the ETag you have: an unchanged resource answers 304 Not Modified in under a millisecond.
  • Responses are precompressed: ask for Accept-Encoding: br (or gzip).
  • A response marked "partial": true lacks an optional part that timed out; it is sent with no-store, so simply retry later.

Rate limits and fair use

The reverse proxy allows about 20 requests per second per client, with bursts of 60; beyond that it answers 429 Too Many Requests. Expensive builds (place summaries, signals, flows, search, CSV exports) also have per-server concurrency limits and answer 503 with Retry-After when saturated.

Back off on 429 and 503 (honour Retry-After), pin versions and revalidate with ETags, and prefer the bulk endpoints (datasets, series, CSV exports) over thousands of single-place requests. For whole histories, the pipeline in the repository rebuilds everything from the original public sources.

Authentication and API keys

Using the API is free and anonymous: no key, no sign-up, and the same data and responses for everyone. Anonymous requests share the limits above. An API key is for automation that needs more: it identifies your requests so they count against your plan's daily allowance instead of the shared anonymous limits. Keys come with the plans that include them (see the plans page); create and revoke them in your account, under API keys.

Send the key in the Authorization header: Authorization: Bearer aus_live_…. Never put a key in a URL: URLs end up in logs, browser histories and Referer headers, so a request with a key in its URL is refused with 400 (revoke that key and create a new one). A key is a secret for servers and scripts: do not ship one in a web page or an app. It is shown once, when you create it; only a hash is stored. The MCP server (/mcp) accepts the same header with a key that has the mcp scope, and counts its tool calls against your account's MCP quota instead of the shared anonymous one.

A keyed response has the same body as the anonymous one, plus X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (when the day's allowance resets, in Unix seconds). The allowance is per account, shared by all its keys, and resets at 00:00 UTC. Keyed responses are Cache-Control: private with Vary: Authorization, so shared caches never store them; ETag revalidation still works, and a 304 counts as a request.

  • 401 Unauthorized, with WWW-Authenticate: Bearer: the Authorization header is malformed, or the key is unknown, revoked or expired. A header that is present but unusable is never treated as anonymous; drop it to call the public API.
  • 403 Forbidden: the key is valid but lacks the scope (api for the HTTP API, mcp for the MCP server), or its owner's plan no longer includes keys.
  • 429 Too Many Requests with Retry-After (seconds until 00:00 UTC) and the X-RateLimit-* headers: the account used its day's allowance. Keys do not lift the server's concurrency limits: a saturated server still answers 503 with Retry-After.
  • 400 Bad Request: a key appeared in the URL.
  • A revoked key, or a plan change, reaches every server within about 30 seconds.

Errors

Errors are application/problem+json (RFC 9457): type, title, status and sometimes detail. Bad input (an unknown fiscal year, a malformed cursor or id) is a 400; an unknown place or record a 404; a saturated server or database a 503 with Retry-After (safe to retry); anything else a 500 with a fixed body. Errors are never cached.

Browsers (CORS)

The statistics, migrations, OpenAPI and CSV export endpoints send Access-Control-Allow-Origin: *, so a web page on any origin can call them. The other contracts endpoints and the assistance, subawards, exclusions, influence, Congress and elections endpoints are same-origin for now: call them from a server, a notebook or the command line.

Grants and assistance

The assistance endpoints cover federal financial assistance from USAspending.gov (FABS): grants and cooperative agreements, loans, direct payments, insurance and other assistance, by place of performance, with the Assistance Listing (program) of each award. Filter by type (a type group) and agency (an assistance agency id from /api/v1/assistance/meta, not a contracts id). Grants to state governments recorded at the agency's own address are counted statewide, not in the capital's county.

Loans are counted at their subsidy cost: obligations of a loan is the expected cost to the government (often zero, sometimes negative), and the amount lent or guaranteed is faceValue, reported apart and never added to obligations. Never add face value to obligations, and compare loan programs on face value (type=loans ranks by it).

Assistance and contracts are separate datasets with separate versions. The same organization can appear in both: a ranked recipient's link is its contracts recipient id when it has one, else g<id>.

Subawards

Subawards are the first-tier sub-contracts and sub-grants prime recipients report under FFATA. They are money the prime passes on, already inside its obligations: never add subawards to prime totals (that counts the same dollar twice), and read amounts as reported by the prime, not as obligations.

Reporting is uneven: repeated reports of the same action are left out (duplicates), and reported amounts can exceed the prime's obligations (shareOfObligations over 100 is itself a reporting finding). Only the years from firstFiscalYear have subawards loaded.

Competitors and teaming partners

The competitors of a company are other companies that win from the same buyers in the same markets. A market is a subtier agency × NAICS industry group (the first four digits of the award's code); a company is the recipient's whole company family. Companies are compared by the weighted Jaccard index of their prime contract obligations by market over three fiscal years (similarity, 0 to 1): it grows with the dollars both hold in common markets and shrinks with the dollars each holds elsewhere, so a company of the same size and mix ranks above a giant that merely also sells there. It describes who sells to the same buyers, not who wins against whom on a given contract.

Teaming partners are read from subaward reports (see Subawards): the companies a company reported paying, the primes that reported paying it, and potential partners (sub-recipients that its competitors pay and it has no report with). Reported amounts are never added to prime totals, and only organizations are listed.

Everyone gets the top three of each list; plans that include competitor tracking and teaming partners get the full lists (25 of each), potential partners and CSV exports. The payload is built for the caller's plan (access), so these responses depend on the session (Vary: Cookie).

Exclusions

Exclusions are SAM.gov records of organizations debarred, suspended or otherwise excluded from federal awards. exclusions are reported matches: the recipient's UEI or CAGE code is on the record. possible are name matches an AI judged likely (with their probability and model): shown for review, never counted.

Only exclusions that bar awards count, and only new awards, options and added work dated while one was in effect; other modifications are context (continuations). History starts at historyFrom: exclusions that ended before it are unknown. A count is a reason to look closer (an exception may apply), not a finding of wrongdoing.

Influence

The influence endpoints join lobbying disclosures (House Clerk: LD-2 reports and LD-203 contributions) and PAC activity (FEC) to contract recipients. The join is an AI name judgment (matches with their probability, ai with the models and threshold): an inferred link, not a reported one.

Correlation is not influence: an organization that lobbies an agency and wins its contracts shows that both happened, not that one caused the other. A lobbying report's amount covers all its issues and agencies, so per-agency spend is an upper bound. Describe these figures as disclosed activity, never as evidence of wrongdoing.

Congress and elections

Congress endpoints serve recorded roll calls (House Clerk for the House; Voteview for the Senate, since senate.gov refuses automated clients), bills (GovInfo BILLSTATUS), members, committees and districts. A member's position exists only where a roll call recorded it: voice votes and unanimous consent are never inferred. Voteview data (Senate votes, DW-NOMINATE) must be cited: Lewis, Poole, Rosenthal, Boche, Rudkin and Sonnet, Voteview: Congressional Roll-Call Votes Database.

Money and votes are side by side, never cause and effect: describe them as received, given and voted. Activity measures (missed votes, votes with the party, bills sponsored) carry their denominators and are not grades. Election candidates are those who filed with the FEC, not the ballot, which the state sets.

Privacy: organizations only

The API lists organizations only. Individuals are never listed, except members of Congress and federal candidates as named in official records: assistance to individuals and county aggregates is counted in totals (individualShare, aggregateShare) but not named; excluded individuals, lobbyists, individual donors, executives and SAM.gov contacts are neither loaded nor shown; registrants or clients that may be people are counted (unnamed) or shown without a name; PAC recipients are campaign committees. Please keep it that way in what you publish.

Licensing and attribution

The code is licensed under the GNU AGPL-3.0-or-later. The data keeps the terms of its publishers: most are US government works in the public domain; Zillow's values require attribution and the County Health Rankings supplemental release has its own terms. Every indicator lists its source, license and credit line in /api/v1/meta, and every contracts payload carries its source.

When you publish figures, credit the original publisher and "Analisa US" with a link, and state the period and vintage of the values. Integrity signals are reasons to look closer, never evidence of wrongdoing. AI-derived fields (name matches, award readings) are labelled as inferred; the AI features themselves (/api/v1/ai/*) serve the site, same-origin and quota-limited, and are not part of this API.

System

Health checks and this document.

GET/api/health
Liveness

The server process answers. Never touches the database: use it for container health checks.

Never cached.

Not cachedErrors: 401, 429, 500

Parameters

No parameters.

Response · 200 Alive.

application/jsonHealth

Liveness: the process answers (the database is not touched).

Example

curl --compressed 'https://tryanalisa.com/api/health'
GET/api/ready
Readiness

The database answers a trivial query within 1 s (200), else 503 with Retry-After. For load balancers and deploy checks.

Never cached.

Not cachedErrors: 401, 429, 500, 503

Parameters

No parameters.

Response · 200 Ready to serve traffic.

application/jsonReady

Readiness: the database answered a trivial query within 1 s (503 otherwise).

Example

curl --compressed 'https://tryanalisa.com/api/ready'
GET/api/v1/openapi.json
This OpenAPI document

OpenAPI 3.1, generated from the typed registry the routes are documented in (apps/analisa/src/lib/api-docs).

Cached for a short time (see Cache-Control).

Short cacheCORSErrors: 401, 429, 500

Parameters

No parameters.

Response · 200 The document.

application/jsonOpenApiDocument

This document.

Example

curl --compressed 'https://tryanalisa.com/api/v1/openapi.json'

Statistics

Quality-of-life indicators for every US state and county: the catalog, the map datasets, series and place histories.

GET/api/v1/meta
Catalog and dataset version

Every category, indicator, source and scoring profile, the latest loaded release of each source, and the current dataset version with the versioned dataset URLs.

Cached for a short time (see Cache-Control).

Short cacheCORSErrors: 401, 429, 500

Parameters

No parameters.

Response · 200 The catalog.

application/jsonMeta

The catalog: what is measured, from where, and the loaded releases.

Example

curl --compressed 'https://tryanalisa.com/api/v1/meta'
GET/api/v1/datasets/{level}
Every place × every indicator

The map dataset of one level (state, metro, county or city): for every place, the latest value, percentile score, period and data-quality flags of every indicator. Scores rank a place only among places of its own level, so scores of different levels are not comparable. Cities are the Census places with at least 1,000 residents (smaller ones are stored but not scored). A borrowed flag marks a city's value that is really its county's; an aggregated flag a metro area's or state's value rolled up from counties (see Places, levels and GEOIDs). Binary by default (about 630 KB with brotli for the 3,144 counties); ?format=json for JSON, whose places columns are geoid, name, stateCode, lat and lng (the county and metro columns are in the binary header).

Cached per dataset version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from GET /api/v1/meta (version) or the X-Dataset-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 401, 404, 429, 500

Parameters

levelrequired
"county" | "state" | "metro" | "city"Geographic level: state (2-digit FIPS GEOIDs, "48"), metro (metropolitan and micropolitan areas: M + the 5-digit CBSA code, "M12420"), county (5-digit GEOIDs, "48453") or city (Census places with at least 1,000 residents: cities, towns, villages and census-designated places, 7-digit GEOIDs, "4805000").
formatquery
"binary" | "json"json for the JSON rendition; binary otherwise.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The dataset (binary). With `?format=json`.

application/vnd.analisa.dataset+binary

Format: Container "ANL2" (header format 4): 4 magic bytes, a uint32 little-endian header length, a JSON header (level, version, count, places, indicators, block descriptors), then 4-byte aligned blocks of byte-shuffled scaled integers (int16/int32, value × 10^scale), one-byte scores (0–200 = 0–100 in half points) and two-byte little-endian flags per place and indicator (the bit set described at flags of the JSON rendition, including 4 aggregated and 256 borrowed). The header's places holds the columns geoid, name and stateCode and, where they apply, county (city datasets: the GEOID of the county holding most of each city's residents, which is where its borrowed values come from) and metro (city and county datasets: the GEOID of the metro area holding most of each place's residents, "" outside metro areas). The reference decoder is apps/analisa/src/lib/dataset/codec.ts (decodeDataset).

application/json; charset=utf-8DatasetJson

The map dataset as JSON (?format=json): the same columns as the binary format.

Example

curl --compressed 'https://tryanalisa.com/api/v1/datasets/state?format=json'
GET/api/v1/indicators/{key}/series
One indicator's full history for every place

Every published period of one indicator for every place of a level (state, metro, county or city). Places follow the order of the matching dataset.

Cached per dataset version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from GET /api/v1/meta (version) or the X-Dataset-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 404, 429, 500

Parameters

keyrequired
stringIndicator key (from /api/v1/meta).
levelquery
"county" | "state" | "metro" | "city"Default county.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The series (binary).

application/vnd.analisa.series+binary

Format: Container "ANS1" (same layout as the dataset): the JSON header lists geoids and periods (oldest first); one scaled-integer block per period, aligned with geoids. Reference decoder: apps/analisa/src/lib/dataset/series.ts (decodeSeries).

Example

curl --compressed 'https://tryanalisa.com/api/v1/indicators/median_household_income/series?level=state'
GET/api/v1/places/{geoid}
A place with its full history

The nation, a state, a metro area (M + CBSA code), a county or a city or town (7-digit place GEOID) with every published value of every indicator (about 20 KB with brotli) and links to the areas it belongs to or overlaps (states, metro, counties with residents' shares).

Cached per dataset version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from GET /api/v1/meta (version) or the X-Dataset-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string"US", a 2-digit state FIPS code or a 5-digit county GEOID.pattern ^(?:US|\d{2}|\d{5})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The place.

application/jsonPlaceDetail

One place with the full published history of every indicator.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/48453'
GET/api/v1/places/search
Search places by name

Finds states, metro and micro areas, counties, and cities and towns (about 36,000 places) by name. q is a name, a prefix or a misspelling ("aus", "austn"), optionally followed by a state ("austin, tx", "austin texas"); a comma makes the state certain, while without one the state is dropped when it leaves no result ("Mount Pleasant in" is not a place in Indiana). Fewer than 2 letters or digits answer an empty list. Results are ordered exact name, name prefix, word prefix, then similar spelling, the larger place first within a tier. Each has its GEOID, label, population and page. Identical queries are answered from a cache per data version; a burst of distinct queries is shed with 503 and Retry-After.

Cached per places version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/meta (version, the dataset version that search results follow) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500, 503

Parameters

qquery
stringThe text to search for (only the first 100 characters count).
limitquery
integerMost results to return: 1 to 20 (default 8); values outside the range are clamped.≥ 1 · ≤ 20
levelquery
stringComma-separated levels to search: any of state, metro, county, city (for example city,metro). Unknown names are ignored; every level when none is valid.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The matches.

application/jsonPlaceSearchResponse

Places matching a name.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/search?q=austin%2C%20tx&limit=5'
GET/api/v1/datasets/tract/areas/{geoid}
Counties behind an area's neighborhoods

The counties whose census tracts make up the neighborhoods of a county, a city or a metro area, each with the content hash of its tract shapes, so a client can fetch every county's tract dataset and shapes in parallel. A city spans whole counties here: its neighborhoods are all the tracts of the counties its residents live in.

Cached per tracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from version of GET /api/v1/datasets/tract/areas/{geoid} or the X-Data-Version header of a neighborhoods response; it follows the dataset version) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
stringThe area: a county (5 digits, 48453), a city or town (7 digits, 4805000) or a metro area (M + CBSA code, M12420).pattern ^(?:\d{5}|\d{7}|M\d{5})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The area's counties.

application/jsonTractArea

The counties behind an area's neighborhoods, with the content hash of each county's tract shapes.

Example

curl --compressed 'https://tryanalisa.com/api/v1/datasets/tract/areas/4805000'
GET/api/v1/datasets/tract
One county's neighborhoods × every indicator

The census tracts ("neighborhoods", about 4,000 residents each) of one county, in the format of /api/v1/datasets/{level}: the latest value, score, period and data-quality flags of every indicator with a tract figure (ACS 5-year estimates with their unreliable flags, CDC PLACES crude prevalence flagged crude and model-based, FEMA's hazard percentile among tracts, distances), plus the county's own value of area-wide measures, flagged borrowed. Scores rank a tract among every tract of the nation (reliability-adjusted toward its county's mean where a standard error is published), so they compare across counties; tracts under 500 residents carry values but no scores. Indicators with no value in the county are left out. Binary by default (Travis County: 37 KB with brotli; Los Angeles County, the largest: 266 KB); ?format=json for JSON.

Cached per tracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from version of GET /api/v1/datasets/tract/areas/{geoid} or the X-Data-Version header of a neighborhoods response; it follows the dataset version) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 404, 429, 500

Parameters

countyrequired
string5-digit county GEOID (state + county FIPS), e.g. 48453 (Travis County, TX).pattern ^\d{5}$
formatquery
"binary" | "json"json for the JSON rendition; binary otherwise.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The county's tracts (binary). With `?format=json`.

application/vnd.analisa.dataset+binary

Format: The "ANL2" container of /api/v1/datasets/{level} with level "tract": scores are always shipped (they are national ranks, which a county's values cannot recompute), places.counties holds the county, borrowed values are stored once per county (countyValues), and the header's shards maps the county to the content hash of its shapes. Reference decoder: apps/analisa/src/lib/dataset/codec.ts (decodeTractDataset).

application/json; charset=utf-8TractDatasetJson

One county's neighborhoods as JSON (?format=json): the same columns as the binary format.

Example

curl --compressed 'https://tryanalisa.com/api/v1/datasets/tract?county=48453&format=json'
GET/api/v1/datasets/tract/estimates/{geoid}
One neighborhood's estimates with margins of error

One census tract's own published estimates with their standard errors and 90% margins of error (ACS: published margin; CDC PLACES: from the confidence interval). Tract estimates are noisy: a difference between two tracts smaller than their margins is not a difference. The tract dataset leaves standard errors out to stay small; this is what to show next to a selected tract's values.

Cached per tracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from version of GET /api/v1/datasets/tract/areas/{geoid} or the X-Data-Version header of a neighborhoods response; it follows the dataset version) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string11-digit census tract GEOID (county + 6-digit tract code), e.g. 48453001101.pattern ^\d{11}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The tract's estimates.

application/jsonTractEstimates

One census tract's published estimates with their margins of error.

Example

curl --compressed 'https://tryanalisa.com/api/v1/datasets/tract/estimates/48453001101'
GET/api/v1/geo/shards/{kind}/{key}
Generated boundary shapes: a county's tracts or a state's cities (TopoJSON)

Boundaries too numerous for one file, as TopoJSON with the feature id = the GEOID and properties.name = its short name. tracts/{county}: the census tracts of one county (object tracts). cities/{state}: the cities and towns of one state (object cities). 1:500,000 cartographic boundaries, simplified for map zoom and clipped to the shoreline (for maps, not for measuring areas). Addressed by content: with h set to the current hash (shard of /api/v1/datasets/tract/areas/{geoid}, or shards of the tract and city datasets) the response is cached as immutable for a year; without it, or with an outdated hash, it is the current shapes cached for five minutes. The ETag is the content hash.

Cached for a short time (see Cache-Control).

Short cacheCORSErrors: 400, 401, 404, 429, 500

Parameters

kindrequired
"tracts" | "cities"What the shard holds: tracts (a county's census tracts) or cities (a state's cities and towns).
keyrequired
stringtracts: 5-digit county GEOID (e.g. 48453). cities: 2-digit state FIPS code (e.g. 48).pattern ^(\d{5}|\d{2})$
hquery
stringContent hash of the shapes, for an immutable response.≤ 64 chars

Response · 200 The shapes.

application/json; charset=utf-8

Format: TopoJSON topology (UTF-8), quantized.

Example

curl --compressed 'https://tryanalisa.com/api/v1/geo/shards/tracts/48453'
GET/api/v1/places/{geoid}/breakdowns
The distributions behind a place's numbers

Household income brackets, age and sex, race and Hispanic origin, owners and renters, rent, home values, commute mode and time, education, age and size of homes: for the latest American Community Survey 5-year window and the one before it, each bucket with its count, 90% margin of error, share and change in share since the earlier window, the state's and the nation's distribution, and the data.census.gov table it comes from. Buckets sum published Census cells; the grouping is ours. A bucket with a margin of error above 30% of its estimate is flagged lowReliability; a change is significant only beyond the combined margin of error.

Cached per breakdowns version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any breakdowns response; it changes when a new ACS release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string"US", a 2-digit state FIPS code, a metro area GEOID (M + the 5-digit CBSA code), a 5-digit county GEOID or a 7-digit city GEOID.pattern ^(?:US|\d{2}|M\d{5}|\d{5}|\d{7})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The place's distributions.

application/jsonPlaceBreakdowns

The distributions behind a place's headline numbers, for the latest ACS 5-year window and the one before it.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/4805000/breakdowns'
GET/api/v1/occupations
Search occupations

SOC 2018 occupations whose title or code matches q, best first (an exact title, then titles whose words start with the query, then titles containing it; detailed occupations before group totals; larger occupations first). Without q, the largest occupations nationally. Use a returned code with /api/v1/places/{geoid}/wages.

Cached per wages version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any occupations or wages response; it changes when a new BLS release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qquery
stringText to find in titles, or a code prefix such as "15-12". Default: none.≤ 80 chars
limitquery
integerResults to return. Default 10.≥ 1 · ≤ 50
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The matching occupations.

application/jsonOccupationSearch

Occupations matching a search, best first.

Example

curl --compressed 'https://tryanalisa.com/api/v1/occupations?q=nurse&limit=5'
GET/api/v1/places/{geoid}/wages
Jobs and pay in a place's area

Employment and annual pay (mean, median, 10th/25th/75th/90th percentiles, location quotient) by occupation from the BLS Occupational Employment and Wage Statistics survey, all industries and ownerships, next to the principal state's and the nation's. BLS publishes metro areas, states and the nation: those answer as themselves, a county or city with the metro area it lies in (requested says which place was asked about), and a place in no metro area is a 404. With occupation the one occupation; otherwise the largest occupations by employment (group, limit). Pay is in current dollars, not adjusted for the cost of living, and BLS caps the highest wages it publishes (wage-top-coded).

Cached per wages version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any occupations or wages response; it changes when a new BLS release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string"US", a 2-digit state FIPS code, a metro area GEOID (M + the 5-digit CBSA code), a 5-digit county GEOID or a 7-digit city GEOID.pattern ^(?:US|\d{2}|M\d{5}|\d{5}|\d{7})$
occupationquery
stringSOC code from /api/v1/occupations, e.g. "15-1252". Default: the largest occupations.pattern ^\d{2}-\d{4}$
groupquery
"detailed" | "major"Which occupations to rank when occupation is not given. Default detailed.
limitquery
integerOccupations to return when occupation is not given. Default 12.≥ 1 · ≤ 50
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 Pay by occupation.

application/jsonPlaceWages

Employment and annual pay by occupation in a place's area, with the principal state's and the nation's.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/M12420/wages?occupation=15-1252'
GET/api/v1/places/{geoid}/changes
What changed in a place over five years

For every scored indicator with a comparable history: the latest value and the one about five years earlier (two non-overlapping periods of the same publisher dataset; for American Community Survey indicators the windows 2015-2019 and 2020-2024), the change, whether it is an improvement for the indicator's direction, whether it exceeds the published margin of error (1.645 × the root of the summed squared standard errors; indicators without a margin are unassessed), and how favourable it is against the same change in the other places of the level (peers). Also the five largest improvements and declines, and up to five places that looked most like this one five years ago and have improved most since (most real improvements minus declines, then the rise in standing). Never compared across a source change. A comparison of published estimates: it says what moved, not why. Cities under 1,000 residents are not ranked and answer 404.

Cached per changes version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any changes response; it changes when a release of any indicator source is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
stringA 2-digit state FIPS code, a metro area GEOID (M + the 5-digit CBSA code), a 5-digit county GEOID or a 7-digit city GEOID (cities of at least 1,000 residents).pattern ^(?:\d{2}|M\d{5}|\d{5}|\d{7})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The place's changes.

application/jsonPlaceChanges

What changed in a place over about five years, with significance, direction and peer comparison, and the places like it that improved.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/48453/changes'
GET/api/v1/places/{geoid}/business
Local businesses of a place by industry

Employer establishments, paid employees, annual payroll and nonemployer businesses for the NAICS sectors and a curated list of narrower industries (restaurants, child day care, dentists, gyms, auto repair…), from the Census Bureau's County Business Patterns (2023) and Nonemployer Statistics (2024), with establishments per 10,000 residents against the state's and the nation's, a density index (1.00 = the nation's density) and average pay. Metro areas are the exact sums of their counties (flag aggregated). The Census Bureau publishes business counts no finer than counties, so a city answers with its county's figures (requested names the city). Employment and payroll are noise-infused by the Census Bureau (see flags). Counts of businesses against counts of residents: not a measure of demand, size, quality or profit.

Cached per business version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any business response; it changes when a new County Business Patterns or Nonemployer Statistics release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
stringA 2-digit state FIPS code, a metro area GEOID (M + the 5-digit CBSA code), a 5-digit county GEOID or a 7-digit city GEOID (answered with its county's figures).pattern ^(?:\d{2}|M\d{5}|\d{5}|\d{7})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The place's business figures.

application/jsonPlaceBusiness

Employer and nonemployer businesses of a place by industry, per resident and against the state and the nation.

Example

curl --compressed 'https://tryanalisa.com/api/v1/places/48453/business'
GET/api/v1/business/industries
Industries with national business figures

The all-industries total, the 19 NAICS sectors and the curated narrower industries, each with its stable key, its NAICS code in both editions the surveys use (County Business Patterns 2023 is NAICS 2017, Nonemployer Statistics 2024 is NAICS 2022) and national establishments, employment, payroll and nonemployers. Use a key or NAICS code with /api/v1/business/industries/{naics}/places.

Cached per business version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any business response; it changes when a new County Business Patterns or Nonemployer Statistics release is loaded) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The industries.

application/jsonBusinessIndustries

The industries of the catalog with their national business figures.

Example

curl --compressed 'https://tryanalisa.com/api/v1/business/industries'
GET/api/v1/business/industries/{naics}/places
Metro areas or counties ranked for an industry

Places ranked for one industry: establishments, employment, average pay, nonemployers, establishments per 10,000 residents, residents per establishment (more residents per business means fewer competitors per resident: a count, not a measure of demand), a density index against the nation's and, once the tables hold a second reference year of the same NAICS edition, growth of establishments (only 2023 is loaded now, so growth is null). With federal contract obligations in the industry's NAICS codes for the contracts fiscal year: the nation's, and the ten metro areas (sums of their counties), counties and cities (estimated from ZIP codes) where the most was performed. Metro areas count under their principal state. Places below minPopulation or with fewer than minEstablishments are left out: a handful of businesses makes the ratios jump around.

Cached per business version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any business response; it changes when a new County Business Patterns or Nonemployer Statistics release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

naicsrequired
stringAn industry key from /api/v1/business/industries ("restaurants") or a NAICS code of the catalog ("7225", "44-45").≤ 64 chars
levelquery
"metro" | "county"Places to rank. Default metro.
statequery
stringUSPS state code (TX) to keep one state's places. A metro area counts under its principal state.≤ 2 chars
minPopulationquery
integerFewest residents. Default 100,000 for metros, 50,000 for counties.≥ 0
minEstablishmentsquery
integerFewest establishments of the industry. Default 5.≥ 0
sortquery
"residents" | "density" | "establishments" | "employment" | "pay" | "nonemployers" | "growth" | "population"Ranking key. Default residents (residents per establishment). Missing values sort last.
orderquery
"asc" | "desc"Default desc.
limitquery
integerPlaces per page. Default 25.≥ 1 · ≤ 100
offsetquery
integerPlaces to skip. Default 0.≥ 0 · ≤ 10000
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 One page of ranked places.

application/jsonIndustryPlaces

Metro areas or counties ranked for one industry, with figures per resident.

Example

curl --compressed 'https://tryanalisa.com/api/v1/business/industries/restaurants/places?state=TX&limit=10'

Migrations

Immigration and emigration by country of birth or destination, for the nation and the states.

GET/api/v1/migrations/{metric}
One migration metric for one hub

Every period × every counterpart country, plus the publisher's all-countries total, for the nation or a state (10–100 KB).

Cached per migrations version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from the X-Dataset-Version header of any migrations response) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 404, 429, 500

Parameters

metricrequired
stringMigration metric key (see packages/indicators/src/migration).
hubquery
string"US" (default) or a 2-digit state FIPS code, for metrics published by state.pattern ^(US|\d{2})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The metric.

application/jsonMigrationPayload

One migration metric for one hub (the nation or a state): every period and counterpart country.

Example

curl --compressed 'https://tryanalisa.com/api/v1/migrations/foreign_born_population?hub=US'
GET/api/v1/migrations/context
National context series

International migration against natural increase, the share born abroad and long national totals.

Cached per migrations version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from the X-Dataset-Version header of any migrations response) for a response cached as immutable.

Cached per versionCORSErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The series.

application/jsonMigrationContext

National series that frame the migrations map.

Example

curl --compressed 'https://tryanalisa.com/api/v1/migrations/context'

Contracts

Federal prime contracts (USAspending.gov) and contract notices (SAM.gov) by place of performance.

GET/api/v1/contracts/meta
Fiscal years, agencies and freshness

The loaded fiscal years, the agency filter options, the latest action date loaded and the contracts data version.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The metadata.

application/jsonContractsMeta

Loaded fiscal years, agency filter options and data freshness.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/meta'
GET/api/v1/contracts/map
One value per county or state

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

levelquery
"county" | "state"
metricquery
"obligations" | "per_capita" | "actions" | "low_competition_share" | "not_competed_share" | "single_offer_share" | "small_business_share"
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The map values.

application/jsonContractsMap

One value per county or state.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/map?level=state&metric=per_capita'
GET/api/v1/contracts/places/{geoid}
A place's spending summary

KPIs against the previous year, monthly and yearly series, categories, top buyers, recipients and industries, largest awards. Place = place of performance. A metro area's figures are the sum of its counties'. A city's are estimated: each action's county money split by the share of its award's ZIP code that lies in the city (land, Census ZCTA relationship files), part of its counties' figures (see attribution); counts are of actions with any share in the city.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

geoidrequired
string"US", a 2-digit state FIPS code, a 5-digit county GEOID, a metro area GEOID (M + the 5-digit CBSA code, "M12420") or a 7-digit city GEOID ("4805000"). A metro area's money is the sum of its counties'; a city's is its share of its counties' money, split by the land of each ZIP code inside it (see attribution).pattern ^(?:US|\d{2}|\d{5}|M\d{5}|\d{7})$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The summary.

application/jsonContractsPlaceSummary

Where a place's contract money goes.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/places/06?fy=2025'
GET/api/v1/contracts/search
Search agencies, recipients, awards, notices, grant recipients and programs

Trigram and full-text matching; 3 normalized characters or more (shorter queries answer empty groups). Also organizations with federal assistance and no contracts, and Assistance Listings by number or title.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500, 503

Parameters

qrequired
stringThe text to search.≤ 120 chars
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 Matches by group.

application/jsonContractsSearchResults

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/search?q=lockheed'
GET/api/v1/contracts/awards
Awards, 25 per page

Keyset pagination: pass nextCursor back as cursor. An unknown fiscal year or agency, or a malformed cursor, is a 400; other unrecognized filters are ignored.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qquery
stringWords in the description (full text), or a contract number (PIID) prefix.≤ 200 chars
fyquery
integerFiscal year the award was active in (400 when not loaded).≥ 2000 · ≤ 2100
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
subtierquery
integerAwarding subtier agency id.
officequery
integerAwarding office id.
recipientquery
stringRecipient id.pattern ^\d{1,19}$
placequery
stringState FIPS or county GEOID of the place of performance.
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
competitionquery
"competed" | "not-competed" | "unknown"
flagquery
"low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18)Only awards carrying this integrity signal (award-level signals only).
sortquery
"value" | "recent" | "growth"Largest first (default), latest action first, or largest ceiling growth first.
cursorquery
stringnextCursor of the previous page.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 A page of awards.

application/jsonAwardPage

25 awards; keyset pagination.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/awards?fy=2025&place=48&sort=value'
GET/api/v1/contracts/awards/{id}
An award with every action

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringAward id (the id of an award row).pattern ^\d{1,19}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The award.

application/jsonAwardDetail

An award with every action, its agencies, recipient and related notices (the main fields; more are included).

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/awards/8469442'
GET/api/v1/contracts/recipients
Recipients ranked by obligations, 25 per page

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qquery
stringName words or a UEI.≤ 200 chars
cursorquery
stringAn offset from nextCursor (multiples of 25 up to 10,000).
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 A page of recipients.

application/jsonRecipientPage

25 recipients; nextCursor is an offset (up to 10,000).

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/recipients?fy=2025'
GET/api/v1/contracts/recipients/{id}
A recipient's profile

The response version combines the data and company-family versions: a URL pinned to the data version alone is revalidated by ETag rather than cached as immutable.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringRecipient id.pattern ^\d{1,19}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The profile.

application/jsonRecipientProfile

A recipient's history, agencies, what it sells and where (organizations only).

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/recipients/1451334?fy=2025'
GET/api/v1/contracts/agencies
Subtier agencies ranked by obligations

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

placequery
stringState FIPS or county GEOID.
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The agencies.

application/jsonAgencyPage

Subtier agencies ranked by obligations (up to 300; one page).

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/agencies?fy=2025&place=06'
GET/api/v1/contracts/agencies/{id}
An agency's profile

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringToptier, subtier or office id.pattern ^\d{1,19}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The profile.

application/jsonAgencyProfile

A toptier agency, subtier agency or contracting office.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/agencies/8838?fy=2025'
GET/api/v1/contracts/opportunities
SAM.gov notices, 25 per page

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qquery
stringWords (full text) or a solicitation number.≤ 200 chars
openquery
"1"Only notices still open for responses.
typequery
stringNotice base type.
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
statequery
stringTwo-letter state code of the place of performance.pattern ^[A-Za-z]{2}$
sortquery
"recent" | "deadline"
cursorquery
string
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 A page of notices.

application/jsonOpportunityPage

25 notices; keyset pagination.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/opportunities?open=1&sort=deadline'
GET/api/v1/contracts/opportunities/{id}
A SAM.gov notice

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringNotice id.pattern ^[\w-]{6,64}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The notice.

application/jsonOpportunityDetail

A SAM.gov notice with its description and the awards that match its solicitation.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/opportunities/9832ec694bd8461bb279fd5f19e43e5a'
GET/api/v1/contracts/graph
Buyer ↔ recipient network

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

focusquery
string"a<agency id>" or "r<recipient id>".pattern ^[ar]\d+$
limitquery
integerEdges; rounded down to 20, 40, 80, 160, 240, 320 or 400 (default 160, 80 in focus).
signalquery
"low-competition"
familiesquery
"1"Merge each company family into one node.
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The network.

application/jsonContractsGraph

The buyer ↔ recipient network.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/graph?fy=2025&limit=80'
GET/api/v1/contracts/relationship
One agency–recipient relationship

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

subtierrequired
integerSubtier agency id.
recipientrequired
stringRecipient id.pattern ^\d{1,19}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The relationship.

application/jsonContractsRelationship

One agency–recipient relationship and its awards.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/relationship?subtier=8917&recipient=2999810&fy=2026'
GET/api/v1/contracts/signals/{geoid}
Integrity signals of a place

Every integrity signal for the scope with the national value, top contributors and the sole-source justifications cited.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

geoidrequired
string"US", a 2-digit state FIPS code or a 5-digit county GEOID.pattern ^(?:US|\d{2}|\d{5})$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The signals.

application/jsonContractsSignals

Integrity signals of a scope: reasons to look closer, never evidence of wrongdoing.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/signals/US?fy=2025'
GET/api/v1/contracts/rankings
A ranking (top 50)

Agencies, offices, recipients or relationships by obligations or an integrity measure, with a minimum size for shares.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

kindrequired
"agencies" | "offices" | "recipients" | "relationships"
metricrequired
stringobligations or an integrity measure (e.g. not_competed_share, single_offer_share); see the rankings panel for the list.
orderquery
"desc" | "asc"
placequery
stringAgencies only: a state FIPS or county GEOID.
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The ranking.

application/jsonContractsRanking

The top 50 by spending or an integrity measure.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/rankings?kind=agencies&metric=not_competed_share'
GET/api/v1/contracts/flows/{geoid}
Money flows (Sankey)

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

geoidrequired
string"US", a 2-digit state FIPS code or a 5-digit county GEOID.pattern ^(?:US|\d{2}|\d{5})$
modequery
"agency-recipient" | "category-recipient" | "agency-category"
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The flows.

application/jsonContractsFlows

Money flows for a Sankey chart: the 6 largest sources and 8 largest targets.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/flows/US?mode=agency-category'
GET/api/v1/contracts/recompetes
Contracts ending soon (the recompete calendar)

Contract awards whose current period of performance ends between today and the window's end, and whose potential value (base plus every option) is at least the floor, soonest end date first, 25 per page (keyset pagination: pass nextCursor back as cursor). Each row says whether options remain (an option may be exercised instead of recompeting), whether the award was sole-source, who the incumbent is, and up to three SAM.gov notices that may relate to it (match: same solicitation, cites the contract number, or an open notice of the same office for the same NAICS or PSC code, which is only a hint). A recompete candidate is not a prediction: the data cannot tell whether the agency will compete, extend or end the work. End dates are those of the latest loaded modification (lastActionDate). With summary=1 the first page also carries the totals of everything selected, by month and by toptier agency. Anonymous and free callers get the window and the value floor, the soonest ten awards and the totals; one buyer (agency, subtier, office) or one company (recipient) shows five rows to everyone, as profiles do. The recompete calendar plan (Pro and above) gets every row and every filter, for a signed-in session or an API key of its owner (Authorization: Bearer); the CSV export needs the session. access and filters in the payload say what applied; access.ignored lists the filters a preview dropped. The answer depends on the caller's plan (session or key), so it is private and Vary: Cookie. An unknown window, value, agency or place, a malformed filter or cursor is a 400.

Cached for a short time (see Cache-Control).

Short cacheErrors: 400, 401, 429, 500, 503

Parameters

windowquery
6 | 12 | 18 | 24Months ahead of today (UTC) in which the current period of performance must end. Default 18.
minquery
1000000 | 2500000 | 5000000 | 10000000 | 25000000 | 50000000 | 100000000Minimum potential value (base plus every option), US dollars. Default and smallest: 1,000,000.
agencyquery
integerAwarding toptier agency id, one of agencies in /api/v1/contracts/meta (400 otherwise). Recompete calendar plan.> 0
subtierquery
integerAwarding subtier agency id.> 0
officequery
integerAwarding office id.> 0
recipientquery
stringIncumbent recipient id.pattern ^\d{1,18}$
naicsquery
stringNAICS code prefix, 2 to 6 digits. Recompete calendar plan.pattern ^\d{2,6}$
pscquery
stringProduct and service code prefix, 1 to 4 characters. Recompete calendar plan.pattern ^[A-Za-z0-9]{1,4}$
setAsidequery
"none" | "small-business" | "8a" | "hubzone" | "sdvosb" | "wosb" | "veteran" | "indian" | … (9)Set-aside group of the award. Recompete calendar plan.
placequery
stringState FIPS or county GEOID of the place of performance (400 when unknown). Recompete calendar plan.pattern ^(?:US|\d{2}|\d{5})$
solequery
"0" | "1"1: only awards that were not competed. Recompete calendar plan.
optionsquery
"any" | "with" | "without"Only awards with options left (with) or none left (without). Recompete calendar plan.
summaryquery
"0" | "1"1: include the totals on the first page.
limitquery
integerRows on the page, 1 to 25 (default 25); a preview's cap applies too.≥ 1 · ≤ 25
cursorquery
stringnextCursor of the previous page.

Response · 200 A page of the calendar.

application/jsonRecompetePage

A page of the recompete calendar.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/recompetes?window=12&min=10000000&summary=1'
GET/api/v1/contracts/recipients/{id}/competitors
Competitors of a company

Companies that win from the same buyers in the same markets as the company (the recipient's whole company family). A market is a subtier agency × NAICS industry group (first four digits of the award's code); the company's obligations by market over the three fiscal years ending in fy are compared with every other company's by weighted Jaccard similarity (similarity, 0 to 1), so a company of the same size and mix ranks above a giant that merely also sells there. The 300 largest markets of the company are compared and the 500 companies sharing the most dollars are ranked; organizations only. Each competitor carries its obligations by year, the percent change between the last two complete years and its top three shared markets. Prime contract obligations only: subawards are never added. Everyone gets the top three; a plan that includes the feature gets the full lists. The payload is built for the caller's plan (access says which: rows beyond limit are never sent), so the response depends on the session: it is Vary: Cookie, and for a caller with the plan it is private. format=csv downloads the full list (UTF-8 with BOM; 401 signed out, 402 or 403 without the plan). 404 for an unknown recipient.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringContract recipient id (any entity of the company).pattern ^\d{1,18}$
fyquery
integerFiscal year the three-year window ends in. Default and fallback: defaultFiscalYear of /api/v1/contracts/meta.≥ 2000 · ≤ 2100
formatquery
"json" | "csv"csv: the full list as a download (needs the plan). Default json.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The company's competitors. With `format=csv` (the plan's full list).

application/jsonCompetitorsRecipient

The competitors of a company: other companies that win from the same buyers in the same markets, from prime contract obligations over three fiscal years.

text/csv; charset=utf-8

Format: Columns: rank, competitor_id, competitor, location, entities, similarity, overlap_usd, overlap_share_of_company_percent, obligations_usd, obligations_fy<year>_usd (one per window year), change_percent, shared_markets, shared_market_count, company_id, company, window, source, data_through.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/recipients/1461780/competitors?fy=2026'

Assistance

Federal grants, loans, direct payments, insurance and other financial assistance (USAspending.gov), by place of performance. Loans count their subsidy cost; face value is reported apart.

GET/api/v1/assistance/meta
Fiscal years, agencies and freshness

The loaded fiscal years, the agency filter options (assistance agency ids), the date the data is current to and the assistance data version.

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The metadata.

application/jsonAssistanceMeta

Loaded fiscal years, agency filter options and data freshness of federal assistance.

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/meta'
GET/api/v1/assistance/map
One value per county or state

Obligations, obligations per resident, or loan face value (face_value) by place of performance. Unknown level or metric values fall back to county and obligations.

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

levelquery
"county" | "state"Default county.
metricquery
"obligations" | "per_capita" | "face_value"Default obligations.
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: defaultFiscalYear of /api/v1/assistance/meta.≥ 2000 · ≤ 2100
typequery
"grants" | "loans" | "direct-payments" | "insurance" | "other"Assistance type group. Unknown values are ignored (every type).
agencyquery
integerToptier assistance agency id, one of agencies in /api/v1/assistance/meta (not a contracts id). Other ids are ignored.> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The map values.

application/jsonAssistanceMap

One assistance value per county or state (place of performance).

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/map?level=state&metric=per_capita'
GET/api/v1/assistance/places/{geoid}
A place's assistance summary

KPIs against the previous year, monthly and yearly series, types, programs, top agencies and top organizations. County aggregates and individuals are counted in the totals (aggregateShare, individualShare), never listed. A metro area's figures are the sum of its counties'.

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

geoidrequired
string"US", a 2-digit state FIPS code, a 5-digit county GEOID or a metro area GEOID (M + the 5-digit CBSA code, "M12420"). A metro area's money is the sum of its counties'.pattern ^(?:US|\d{2}|\d{5}|M\d{5})$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: defaultFiscalYear of /api/v1/assistance/meta.≥ 2000 · ≤ 2100
typequery
"grants" | "loans" | "direct-payments" | "insurance" | "other"Assistance type group. Unknown values are ignored (every type).
agencyquery
integerToptier assistance agency id, one of agencies in /api/v1/assistance/meta (not a contracts id). Other ids are ignored.> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The summary.

application/jsonAssistancePlaceSummary

Where a place's federal assistance comes from: types, programs, agencies and organizations.

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/places/06?fy=2025&type=grants'
GET/api/v1/assistance/recipients/{id}
Assistance an organization received

404 when it received none in the loaded years (or it is not an organization: individuals and county aggregates have no profile).

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringA contracts recipient id (the same organization, matched by its UEI) or "g<id>" for a recipient with assistance only (the link of a ranked recipient).pattern ^g?\d{1,18}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: defaultFiscalYear of /api/v1/assistance/meta.≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The profile.

application/jsonAssistanceRecipientProfile

Assistance one organization received: programs, agencies and largest awards.

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/recipients/3002653?fy=2025'
GET/api/v1/assistance/agencies/{id}
Assistance an agency awarded

A toptier agency (its subtiers together) or a subtier agency. 404 for offices and for agencies that awarded no assistance.

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContracts toptier or subtier agency id (as in /api/v1/contracts/agencies/{id}); matched to the assistance agency by level and code.pattern ^\d{1,9}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: defaultFiscalYear of /api/v1/assistance/meta.≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The profile.

application/jsonAssistanceAgencyProfile

Assistance an agency awarded (a toptier: its subtiers together).

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/agencies/8933?fy=2025'
GET/api/v1/assistance/programs
Assistance Listings ranked by obligations (top 25)

Programs of a fiscal year, optionally of one type group and matching q. With type=loans the ranking and shares follow face value (loan obligations are subsidy costs).

Cached per assistance version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/assistance/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qquery
stringAn Assistance Listing number (e.g. 93.778) or title words; trimmed to 80 characters (400 beyond 160).≤ 160 chars
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: defaultFiscalYear of /api/v1/assistance/meta.≥ 2000 · ≤ 2100
typequery
"grants" | "loans" | "direct-payments" | "insurance" | "other"Assistance type group. Unknown values are ignored (every type).
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The ranking.

application/jsonAssistanceProgramRanking

Assistance Listings ranked by obligations (top 25).

Example

curl --compressed 'https://tryanalisa.com/api/v1/assistance/programs?fy=2025&q=medicaid'

Subawards

First-tier sub-contracts and sub-grants reported by prime recipients (FFATA). Already inside the primes' obligations: never add them to prime totals.

GET/api/v1/subawards/recipients/{id}/teaming
Teaming partners of a company

The companies a company reported paying as a prime (subcontractors), the primes that reported paying it (primes), and potential partners: sub-recipients that the company's competitors (see the competitors route) reported paying and that have no report with the company in either direction, ranked by how many competitors paid them. The company is the recipient's whole family (every entity's UEI); a partner that is a contract recipient is its whole family too. Every loaded fiscal year is counted; each partner lists its fiscal years and, for sub-contracts, the industries and buyers of the prime awards behind it. Reported amounts are first-tier subawards primes report themselves (FFATA; many go unreported), money already inside the primes' obligations: never add them to prime totals. Organizations only. Everyone gets the top three; a plan that includes the feature gets the full lists. The payload is built for the caller's plan (access says which: rows beyond limit are never sent), so the response depends on the session: it is Vary: Cookie, and for a caller with the plan it is private. Potential partners and format=csv (the full lists in one table) are part of the plan (401 signed out, 402 or 403 without it). 404 for an unknown recipient.

Cached per subawards version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of a subawards response, which combines the contracts and subawards versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringContract recipient id (any entity of the company).pattern ^\d{1,18}$
formatquery
"json" | "csv"csv: every list as one table, for a caller with the plan. Default json.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The company's teaming partners. With `format=csv`.

application/jsonTeamingRecipient

A company's teaming partners: who it passes subcontract money to, who passes it money, and potential partners. Organizations only.

text/csv; charset=utf-8

Format: Columns: relationship (subcontractor, prime, potential partner), rank, partner, partner_uei, partner_recipient_id, location, reported_usd, subawards, fiscal_years, competitors_paying, top_industries, top_agencies, paid_by, company_id, company, source, data_through.

Example

curl --compressed 'https://tryanalisa.com/api/v1/subawards/recipients/1461780/teaming'
GET/api/v1/subawards/awards/{id}
Subawards reported on a contract award

Totals, the largest sub-recipients and the largest subawards the prime reported, every loaded year. reported is null when it reported none; 404 for an unknown award.

Cached per subawards version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of a subawards response, which combines the contracts and subawards versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContract award id (as in /api/v1/contracts/awards/{id}).pattern ^\d{1,18}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The award's subawards.

application/jsonSubawardsAward

Subawards reported on one contract award: totals, largest sub-recipients and subawards.

Example

curl --compressed 'https://tryanalisa.com/api/v1/subawards/awards/18603297'
GET/api/v1/subawards/recipients/{id}
A recipient as prime and as sub-recipient

The sub-recipients a contract recipient reported paying and the primes that reported paying it (matched by UEI), for a fiscal year, with both amounts by year. 404 for an unknown recipient.

Cached per subawards version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of a subawards response, which combines the contracts and subawards versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContract recipient id.pattern ^\d{1,18}$
fyquery
integerFederal fiscal year of the subaward actions. Follows the contracts years: default and fallback defaultFiscalYear of /api/v1/contracts/meta (years before firstFiscalYear of the payload have no subawards loaded).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The recipient's subawards.

application/jsonSubawardsRecipient

A contract recipient in subaward reports, as a prime and as a sub-recipient (matched by UEI).

Example

curl --compressed 'https://tryanalisa.com/api/v1/subawards/recipients/1458732?fy=2026'
GET/api/v1/subawards/agencies/{id}
Subawards under an agency's prime awards

Totals by kind and the largest sub-recipients under a toptier or subtier agency's prime awards in a fiscal year. 404 for offices and unknown agencies.

Cached per subawards version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of a subawards response, which combines the contracts and subawards versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContracts toptier or subtier agency id.pattern ^\d{1,10}$
fyquery
integerFederal fiscal year of the subaward actions. Follows the contracts years: default and fallback defaultFiscalYear of /api/v1/contracts/meta (years before firstFiscalYear of the payload have no subawards loaded).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The agency's subawards.

application/jsonSubawardsAgency

Subawards under a toptier or subtier agency's prime awards.

Example

curl --compressed 'https://tryanalisa.com/api/v1/subawards/agencies/8838?fy=2026'

Exclusions

SAM.gov exclusions (debarred, suspended and otherwise excluded organizations) matched to contract recipients, and the awards dated during one. Identifier matches are reported; name matches are only possible matches.

GET/api/v1/contracts/exclusions/recipients/{id}
A recipient's exclusions

Its SAM.gov exclusion records and its awards with actions dated during one; every loaded year (exclusions span years). exclusions are exact identifier matches (reported); possible are name matches an AI judged likely (shown, never counted). Only exclusions that bar awards count, and only new awards, options and added work. 404 when it has none.

Cached per exclusions version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an exclusions response, which combines the contracts and exclusions versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContract recipient id.pattern ^\d{1,18}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The exclusions.

application/jsonExclusionsRecipient

A recipient's exclusions and its awards dated during one.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/exclusions/recipients/1461087'
GET/api/v1/contracts/exclusions/awards/{id}
An award's actions during an exclusion

The recipient's exclusions and the award's actions dated while one was in effect. exclusions are exact identifier matches (reported); possible are name matches an AI judged likely (shown, never counted). Only exclusions that bar awards count, and only new awards, options and added work. 404 when the recipient has no exclusion.

Cached per exclusions version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an exclusions response, which combines the contracts and exclusions versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContract award id.pattern ^\d{1,18}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The award's actions.

application/jsonExclusionsAward

An award's actions dated while its recipient was excluded.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/exclusions/awards/37562989'
GET/api/v1/contracts/exclusions/agencies/{id}
Awards an agency made to excluded parties

Counted actions of a toptier, subtier or office in a fiscal year and in every loaded year, the recipients and the awards (exact identifier matches only). 404 when there are none.

Cached per exclusions version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an exclusions response, which combines the contracts and exclusions versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContracts toptier, subtier or office id.pattern ^\d{1,10}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The agency's awards to excluded parties.

application/jsonExclusionsAgency

Awards an agency (toptier, subtier or office) made to excluded parties.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/exclusions/agencies/8926?fy=2024'

Influence

Lobbying (House Clerk, LDA) and PAC activity (FEC) of organizations matched by AI to contract recipients. Correlation, never evidence of influence.

GET/api/v1/influence/recipients/{id}
Lobbying and PACs of a recipient's company family

Lobbying disclosures (House Clerk: LD-2 reports, LD-203 contributions) and PAC activity (FEC) of the organizations matched to the recipient's company family, every loaded year and cycle. Organizations are matched to contract recipients by AI name judgments (matches, ai): the links are inferred, and a match shows a correlation, never influence. Empty matches (and null lobbying, pacs) when nothing matched; 404 for an unknown recipient.

Cached per influence version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an influence response, which combines the contracts, company-family and influence versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContract recipient id.pattern ^\d{1,18}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The family's lobbying and PAC activity.

application/jsonInfluenceRecipient

Lobbying and PAC activity of the organizations matched to a recipient's company family (every loaded year and cycle).

Example

curl --compressed 'https://tryanalisa.com/api/v1/influence/recipients/1461780'
GET/api/v1/influence/recipients/{id}/congress
Members and bills beside a recipient's lobbying and PACs

Through the organizations matched to the recipient's company family: members of Congress whose campaigns received contributions from their PACs in the latest two FEC cycles (amount and number of PACs; members' current or latest seat), and the bills and resolutions their current lobbying reports named in issue descriptions (each reference resolved to a Congress from the report's period, explicit markers and the bill's title; the description itself is not stored). Comparisons, not causes: nothing says why a contribution was made, how a member voted or which side a report took. Organizations are matched to contract recipients by AI name judgments (matches, ai): the links are inferred, and a match shows a correlation, never influence. Versioned on both the influence and the Congress data. 404 for an unknown recipient.

Cached per influence version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an influence response, which combines the contracts, company-family and influence versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringContract recipient id.pattern ^\d{1,18}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 Members and bills beside the family's lobbying and PACs.

application/jsonInfluenceRecipientCongress

Congress beside a recipient's lobbying and PACs: members whose campaigns received contributions from the matched organizations' PACs, and bills their lobbying reports named. Comparisons, not causes.

Example

curl --compressed 'https://tryanalisa.com/api/v1/influence/recipients/1455292/congress'
GET/api/v1/influence/agencies/{id}
Who lobbies an agency

Organizations whose lobbying reports list a toptier or subtier agency, for the calendar year named like the fiscal year (else the nearest loaded one), ranked by spend. A report's amount covers all its issues and agencies (reports do not split it). For matched organizations, the share of their family's contract obligations in the fiscal year that came from the agency. Organizations are matched to contract recipients by AI name judgments (matches, ai): the links are inferred, and a match shows a correlation, never influence. Clients that may be people are counted in unnamed, never named. 404 for offices and agencies lobbying reports do not name.

Cached per influence version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header of an influence response, which combines the contracts, company-family and influence versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringContracts toptier or subtier agency id.pattern ^\d{1,9}$
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The agency's lobbying clients.

application/jsonInfluenceAgency

Organizations whose lobbying reports list an agency, with their matched contract obligations from it.

Example

curl --compressed 'https://tryanalisa.com/api/v1/influence/agencies/8838?fy=2025'

Outcomes

Federal money per resident by place and fiscal year next to how places changed, and counties whose money jumped compared with similar counties whose money did not. Comparisons with sample sizes and intervals, never causes.

GET/api/v1/outcomes/meta
Domains, outcomes, crosswalk and method

The money domains, the outcomes, every domain–outcome pairing with its rationale, lag, caveat and finding (strength, shocks, interval, placebo), the method's parameters, coverage (fiscal years, shock counts) and the caveats to show.

Cached per outcomes version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/outcomes/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The metadata.

application/jsonOutcomesMeta

Domains, outcomes, the crosswalk with each pairing's finding, the method and coverage.

Example

curl --compressed 'https://tryanalisa.com/api/v1/outcomes/meta'
GET/api/v1/outcomes/places/{geoid}
Money and outcomes of a place

Money per resident by domain and fiscal year (with the nation's), the related outcomes by calendar year (with the nation's, and their change since the base year), and spending shocks: a county's own, each with its matched comparison counties and event study per outcome; a state's counties' (summaries). 404 for an unknown place.

Cached per outcomes version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/outcomes/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string"US", a 2-digit state FIPS code or a 5-digit county GEOID.pattern ^(?:US|\d{2}|\d{5})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The place's money, outcomes and shocks.

application/jsonOutcomesPlace

Money per resident by domain and fiscal year, related outcomes and spending shocks of the nation, a state or a county.

Example

curl --compressed 'https://tryanalisa.com/api/v1/outcomes/places/16001'
GET/api/v1/outcomes/effects
Pooled comparison of a pairing

For one domain–outcome pairing of the crosswalk: the pooled event study (mean difference in change between shock counties and their comparison counties by relative year, 95% bootstrap interval clustered by county, number of shocks), the placebo, the finding and the shocks behind it. 400 for a pair outside the crosswalk.

Cached per outcomes version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/outcomes/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

domainrequired
"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"Money domain.
outcomerequired
"job_growth_rate" | "average_weekly_wage" | "unemployment_rate" | "per_capita_income" | "median_household_income" | "poverty_rate" | "typical_home_value" | "market_rent" | … (12)Outcome (indicator key); the pair must be in the crosswalk.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The pairing's pooled comparison.

application/jsonOutcomesEffects

The pooled event study of a domain and outcome pairing, its placebo, its finding and the shocks behind it.

Example

curl --compressed 'https://tryanalisa.com/api/v1/outcomes/effects?domain=contracts&outcome=job_growth_rate'

Congress

Members, recorded roll-call votes, bills, committees and districts of the loaded Congresses, and money beside them. Recorded votes only: voice votes and unanimous consent record no positions, and none is inferred. House positions from the House Clerk; Senate positions and DW-NOMINATE from Voteview, because senate.gov blocks automated access. Cite Voteview as: Lewis, Poole, Rosenthal, Boche, Rudkin & Sonnet, Voteview: Congressional Roll-Call Votes Database. Contract money by district and campaign money members received are shown side by side: comparisons, never causes.

GET/api/v1/congress/meta
Loaded Congresses, next election and provenance

The loaded Congresses (dates, district plan, roll calls per chamber, bills, laws, last vote, which is current), the next federal general election, the plan and fiscal years of contract money by district, the content hash of each plan's district shapes, and the sources. Its version pins the Congress routes that follow only Congress data.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The metadata.

application/jsonCongressMeta

Loaded Congresses, the next election, district plans and provenance.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/meta'
GET/api/v1/congress/chamber
Everyone who sat in a chamber

One entry per member and seat during the Congress: party and caucus, seat, dates served, whether seated on the reference date, and activity (roll calls held while serving, missed, party-unity votes and those cast with the caucus majority, DW-NOMINATE first dimension, bills sponsored and enacted, cosponsorships across the aisle), with the vacancies and the chamber's roll-call counts as denominators. Volume and attendance, never a grade. House positions come from the House Clerk; Senate positions and DW-NOMINATE scores from Voteview (senate.gov blocks automated access), cited as Lewis, Poole, Rosenthal, Boche, Rudkin & Sonnet, Voteview: Congressional Roll-Call Votes Database.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500, 503

Parameters

congressquery
integerCongress number, one of congresses in /api/v1/congress/meta. Default: the current Congress; one not loaded answers 400.≥ 100 · ≤ 999
chamberrequired
"house" | "senate"house or senate.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The chamber.

application/jsonCongressChamber

Everyone who sat in a chamber during a Congress, with seat and activity.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/chamber?congress=119&chamber=senate'
GET/api/v1/congress/votes
Roll calls

Roll calls of a Congress, newest first, 50 per page (pass next back as cursor), with totals and party tallies. Recorded roll calls only: voice votes and unanimous consent record no positions, and none is inferred. House positions come from the House Clerk; Senate positions and DW-NOMINATE scores from Voteview (senate.gov blocks automated access), cited as Lewis, Poole, Rosenthal, Boche, Rudkin & Sonnet, Voteview: Congressional Roll-Call Votes Database.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

congressquery
integerCongress number, one of congresses in /api/v1/congress/meta. Default: the current Congress; one not loaded answers 400.≥ 100 · ≤ 999
chamberquery
"house" | "senate" | "all"house, senate or all (default).
categoryquery
"passage" | "amendment" | "procedural" | "cloture" | "nomination" | "other"Kind of question.
qquery
stringA bill number ("H.R. 3684", in the chosen Congress) or words matched in the question, description, measure or bill title (first 120 characters).
billquery
stringOnly roll calls on this bill ("119-hr-3684").pattern ^\d{2,3}-(?:hr|s|hjres|sjres|hconres|sconres|hres|sres)-\d{1,5}$
memberquery
stringOnly roll calls this member (Bioguide id, upper case) has a recorded position on.pattern ^[A-Z]\d{6}$
cursorquery
stringnext of the previous page.≤ 64 chars
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 A page of roll calls.

application/jsonCongressVotesPage

A page of roll calls, newest first.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/votes?congress=119&chamber=house&category=passage'
GET/api/v1/congress/votes/{id}
A roll call and every recorded position

Every member's position as recorded (yea, nay, present, not voting, or a name in Speaker elections), party tallies, which Democrats and Republicans voted against their party's majority, the measure and the other roll calls on it. sourceId names the record the positions come from. House positions come from the House Clerk; Senate positions and DW-NOMINATE scores from Voteview (senate.gov blocks automated access), cited as Lewis, Poole, Rosenthal, Boche, Rudkin & Sonnet, Voteview: Congressional Roll-Call Votes Database. 404 for an unknown roll call.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringRoll call id: chamber initial, Congress, session and roll number ("h119-1-145").pattern ^[hs]\d{2,3}-[1-3]-\d{1,4}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The roll call.

application/jsonCongressVote

A roll call with every member's recorded position.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/votes/h119-1-145'
GET/api/v1/congress/bills
Bills and resolutions

Bills and resolutions of a Congress, latest action first (by relevance for a text search), 50 per page with the total (pass next back as cursor). Stage is the furthest reached, from the Library of Congress action codes; the policy area is the one CRS assigned.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

congressquery
integerCongress number, one of congresses in /api/v1/congress/meta. Default: the current Congress; one not loaded answers 400.≥ 100 · ≤ 999
qquery
stringA bill number ("H.R. 3684") finds that measure in the chosen Congress; words search titles, subjects and CRS summaries (first 120 characters).
stagequery
"introduced" | "reported" | "passed_one" | "passed_both" | "to_president" | "law" | "vetoed" | "failed"Furthest stage reached.
areaquery
"Agriculture and Food" | "Animals" | "Armed Forces and National Security" | "Arts, Culture, Religion" | "Civil Rights and Liberties, Minority Issues" | "Commerce" | "Congress" | "Crime and Law Enforcement" | … (33)CRS policy area.
sponsorquery
stringSponsor's Bioguide id (upper case).pattern ^[A-Z]\d{6}$
cursorquery
stringnext of the previous page.≤ 64 chars
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 A page of bills.

application/jsonCongressBillsPage

A page of bills, latest action first (relevance first for a text search).

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/bills?congress=119&stage=law'
GET/api/v1/congress/bills/{id}
A bill's record

Titles, the latest CRS summary, subjects, committees, the action history, cosponsors (original, withdrawn), the roll calls on it, the toptier agencies under its committees' jurisdiction (Analisa's mapping), and the organizations that named it in lobbying reports, each with its AI match to a contract recipient and the match probability: disclosed activity, never evidence of influence. 404 for an unknown bill.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringBill id: Congress, type and number ("119-hr-1").pattern ^\d{2,3}-(?:hr|s|hjres|sjres|hconres|sconres|hres|sres)-\d{1,5}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The bill.

application/jsonCongressBill

A bill's record: history, cosponsors, roll calls, CRS summary, committees and lobbying.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/bills/119-hr-1'
GET/api/v1/congress/search
Search members and bills

Members by name (sitting members first) and bills by number (any loaded Congress) or by words (full text, the current Congress first). Names and words need at least 3 characters; a bill number may be shorter.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

qrequired
stringA name, a bill number ("H.R. 3684") or words (first 120 characters). Under 2 letters or digits answers 400.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 Up to 8 members and 8 bills.

application/jsonCongressSearchResults

Members by name and bills by number or words.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/search?q=water%20resources'
GET/api/v1/congress/patterns
How a chamber voted

Roll calls by category and pass rate, votes per day, the monthly share of party-unity votes, how often both parties' majorities voted the same way, the members with the most party-unity votes against their caucus, the closest votes, bills by furthest stage reached and laws by policy area. Recorded roll calls only: voice votes and unanimous consent record no positions, and none is inferred.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500, 503

Parameters

congressquery
integerCongress number, one of congresses in /api/v1/congress/meta. Default: the current Congress; one not loaded answers 400.≥ 100 · ≤ 999
chamberrequired
"house" | "senate"house or senate.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The chamber's patterns.

application/jsonCongressPatterns

How a chamber voted in a Congress, over recorded roll calls.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/patterns?congress=119&chamber=senate'
GET/api/v1/congress/members/{id}
A member's record

Terms, contact, committee seats, recorded activity per loaded Congress (roll calls, missed votes, party-unity votes with the caucus, rank among members with at least 100 roll calls), DW-NOMINATE placement, the latest passage and amendment votes and breaks with the caucus, sponsored bills and identifiers (GovTrack, OpenSecrets, Wikidata, Ballotpedia, FEC). Volume and attendance, never a grade. House positions come from the House Clerk; Senate positions and DW-NOMINATE scores from Voteview (senate.gov blocks automated access), cited as Lewis, Poole, Rosenthal, Boche, Rudkin & Sonnet, Voteview: Congressional Roll-Call Votes Database. 404 for an unknown member.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringBioguide id ("S001231", any case).pattern ^[A-Za-z]\d{6}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The member.

application/jsonCongressMember

A member's terms, committees, recorded voting per Congress, ideology placement, votes and sponsored bills.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/members/S001231'
GET/api/v1/congress/members/{id}/money
Money a member's campaigns received

Per loaded FEC cycle: contributions the member's campaigns received from political committees (direct and in-kind, by kind of giving committee), the part received from PACs whose sponsoring organization is matched by AI to a federal contract recipient (each match with its probability; the largest ten PACs beside that recipient's contract obligations), and the FEC summaries of the member's candidacies. Comparisons, not causes: money given and received is shown next to contracts, never why it was given or what followed. 404 for an unknown member.

Cached per congress-money version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a response of the same route, which combines the Congress version with the contracts version (committees, districts, district money) or the influence version (a member's money)) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringBioguide id ("S001231", any case).pattern ^[A-Za-z]\d{6}$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The member's campaign money.

application/jsonCongressMemberMoney

Contributions a member's campaigns received from political committees per FEC cycle, the part from PACs of matched contract recipients, and the FEC summaries of the member's candidacies. USD as filed.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/members/S001231/money'
GET/api/v1/congress/committees/{id}
A committee or subcommittee

Current members as published (title, side, rank), subcommittees, the toptier agencies in its jurisdiction (Analisa's mapping) with their contract obligations in the latest closed fiscal year, and the bills referred to it in the current Congress. 404 for an unknown committee.

Cached per congress-money version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a response of the same route, which combines the Congress version with the contracts version (committees, districts, district money) or the influence version (a member's money)) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

idrequired
stringCommittee id ("HSAP"), or a subcommittee's ("HSAP02"); any case.pattern ^[HSJhsj][A-Za-z]{3}(?:\d{2})?$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The committee.

application/jsonCongressCommittee

A committee or subcommittee: members, subcommittees, agencies in its jurisdiction and bills.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/committees/HSAP'
GET/api/v1/congress/districts/{plan}/{id}
A congressional district

Residents, land area, counties (shares both ways), the members who held the seat while the plan was in force, the state's senators, and the contract obligations attributed to the district by place of performance (weighted by its share of each ZIP code and county: an estimate). 404 when the plan has no such district.

Cached per congress-money version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a response of the same route, which combines the Congress version with the contracts version (committees, districts, district money) or the influence version (a member's money)) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

planrequired
"cd116" | "cd118" | "cd119"District plan (cd + the first Congress that sat in it).
idrequired
stringDistrict id: state postal code and number ("CA-12"), at large "AK-AL" or "AK-00".pattern ^[A-Za-z]{2}[-_]?(?:AL|al|\d{1,2})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The district.

application/jsonCongressDistrict

A congressional district of one plan: residents, counties, members, senators and contract money.

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/districts/cd119/CA-12'
GET/api/v1/congress/money
Contract money by district

Contract obligations attributed to every district of a plan in one fiscal year, and per resident: an estimate, by the district's share of each ZIP code and county. Both parameters are required.

Cached per congress-money version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a response of the same route, which combines the Congress version with the contracts version (committees, districts, district money) or the influence version (a member's money)) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

planrequired
"cd116" | "cd118" | "cd119"District plan (moneyPlan of /api/v1/congress/meta).
fyrequired
integerFederal fiscal year, one of moneyFiscalYears in /api/v1/congress/meta; others answer 400.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 Every district's obligations.

application/jsonCongressDistrictMoneyMap

Contract obligations attributed to every district of a plan in one fiscal year (an estimate, by ZIP code and county shares).

Example

curl --compressed 'https://tryanalisa.com/api/v1/congress/money?plan=cd119&fy=2025'

Elections

Races of the next federal general election: the candidates who filed with the FEC (primary losers and withdrawn candidates included, so never the ballot), the money their campaigns received, the sitting members' recorded votes and federal money in the place; and how mail and provisional ballots were counted (EAC EAVS). Neutral: comparisons, never endorsements or causes.

GET/api/v1/elections/races
Every race of the cycle

Every House district and Senate seat of the next general election's cycle: the candidates listed (those whose campaigns received at least $5,000, and incumbents), up to three leaders by money received with their FEC summaries and the part received from PACs whose sponsor is matched by AI to a federal contract recipient, and the sitting member. Candidates are those who filed with the FEC for the seat in the cycle, including those who lost a primary or withdrew: never the ballot, which comes from the state election office.

Cached per elections version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a races response, which combines the Congress, influence and contracts versions) for a response cached as immutable.

Cached per versionErrors: 401, 429, 500, 503

Parameters

vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The races.

application/jsonElectionsOverview

Every House district and Senate seat of the cycle with the candidates who filed with the FEC.

Example

curl --compressed 'https://tryanalisa.com/api/v1/elections/races'
GET/api/v1/elections/races/{id}
One race

Every listed candidate and the money their campaign received, the sitting member's (for a Senate race, both senators') recorded activity in the current Congress, and for a House race the federal money in the district under the current plan (contracts attributed to it; assistance programs to its counties weighted by its share of their residents: estimates) and its counties. Candidates are those who filed with the FEC for the seat in the cycle, including those who lost a primary or withdrew: never the ballot, which comes from the state election office. 404 for a seat with neither candidates nor a sitting member.

Cached per elections version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of a races response, which combines the Congress, influence and contracts versions) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500, 503

Parameters

idrequired
stringRace id: a House district ("ca-12", at large "ak-al") or "<state>-senate" ("ca-senate"), lower case.pattern ^[a-z]{2}-(?:al|\d{2}|senate)$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The race.

application/jsonElectionRace

One race: candidates and the money they received, the sitting member's record, and federal money in the place.

Example

curl --compressed 'https://tryanalisa.com/api/v1/elections/races/ca-12'
GET/api/v1/elections/record
Vote the record

Up to 6 contested final-passage roll calls per chamber of the current Congress in the chosen policy areas (bills and joint resolutions with a CRS summary, yeas between 15% and 85% of those voting, widened to any opposition when too few), areas taken in turn: the same set for everyone with the same district and areas. Each with its CRS summary excerpt, each party's majority side, and the recorded positions of the district's representative and its state's senators. Recorded votes only.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500, 503

Parameters

districtrequired
stringDistrict id under the current plan ("CA-12", at large "AK-AL").pattern ^[A-Za-z]{2}[-_]?(?:AL|al|\d{1,2})$
areasquery
stringUp to 8 CRS policy areas, comma-separated ("Health,Taxation"); none means every area. An unknown area answers 400.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The roll calls and positions.

application/jsonElectionRecord

Contested final-passage roll calls in the chosen policy areas, with the members' recorded positions.

Example

curl --compressed 'https://tryanalisa.com/api/v1/elections/record?district=CA-12&areas=Health,Taxation'
GET/api/v1/elections/districts
Congressional districts of a place

The congressional districts of a county or city under the current plan, with the share of its residents in each (a city through its counties: an estimate where it spans district lines). Empty when none is known.

Cached per congress version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/congress/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionErrors: 400, 401, 429, 500

Parameters

geoidrequired
stringA county (5-digit) or city (7-digit) GEOID.pattern ^(?:\d{5}|\d{7})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The districts.

application/jsonElectionPlaceDistricts

The congressional districts of a county or city under the current plan.

Example

curl --compressed 'https://tryanalisa.com/api/v1/elections/districts?geoid=06001'
GET/api/v1/elections/ballots/{geoid}
How mail and provisional ballots were counted

Mail ballots transmitted, returned, counted and rejected (with the reasons reported and their shares) and provisional ballots cast, counted and rejected in each general election, from the EAC Election Administration and Voting Survey, for a county, a state or the nation, with its state and the nation for comparison. Aggregates only: no voter is identified. Counts are null where offices did not report them. 404 for an unknown place.

Cached per ballots version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from the X-Data-Version header (or version) of any ballots response; it changes when a new EAC EAVS release is loaded) for a response cached as immutable.

Cached per versionErrors: 400, 401, 404, 429, 500

Parameters

geoidrequired
string"US", a 2-digit state FIPS code or a 5-digit county GEOID.pattern ^(?:US|\d{2}|\d{5})$
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The ballot counts.

application/jsonElectionBallots

Mail ballots counted and rejected (and why) and provisional ballots per general election (EAC EAVS), with the state and the nation for comparison. Counts are null where offices did not report them; source.vintage is the latest election loaded.

Example

curl --compressed 'https://tryanalisa.com/api/v1/elections/ballots/06001'

Screening

Check suppliers against the SAM.gov exclusions by UEI or CAGE code, for prime contractors that must not subcontract with excluded firms. Part of the supplier screening plan; counts against its monthly row allowance.

POST/api/v1/screening/check
Check suppliers against SAM.gov exclusions

Checks up to 100 suppliers by UEI and/or CAGE code against the SAM.gov exclusions, synchronously, with the function the bulk screening of the account area uses. A result is active when a record that lists the supplier's UEI or CAGE code is currently listed, ended when only records SAM.gov no longer lists do, and none otherwise; each reported record carries its excluding agency, type, dates and SAM.gov link, and whether it bars federal contract awards. Suppliers with a UEI found among the federal contract recipients also get their obligations of the last three fiscal years, the awards dated while they were excluded, and whether they have lobbying disclosures (AI-matched). Only identifiers match: a name never finds an exclusion here (the account's list screening searches names and labels them possible matches). Results reflect the exclusions as SAM.gov published them at the vintage in sources: always confirm in SAM.gov before making a decision. Part of the supplier screening plan: send an API key (Team plan) or call it signed in (Pro); each supplier counts one row of the monthly allowance shared with uploads, and a call that does not fit is refused whole with 402. Send Content-Type: application/json (415 otherwise). Never cached.

Never cached.

Not cachedAPI key requiredErrors: 400, 401, 402, 403, 413, 429, 500, 503

Parameters

No parameters.

Request body

application/jsonScreeningCheckRequest

The suppliers to check.

Response · 200 One result per supplier, in request order.

application/jsonScreeningCheckResponse

The results of a screening call.

Example

curl -X POST 'https://tryanalisa.com/api/v1/screening/check' \
  -H "Authorization: Bearer $ANALISA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"suppliers":[{"uei":"Q54JKCJTAP64"},{"cage":"3HS96"},{"uei":"ZZZZZZZZZZZZ","cage":"1A2B3"}]}'

Where to live

Cities, metro areas and counties ranked by formula for a person's criteria (budget, household, priorities, climate, commute, must-haves), with every figure's source. The model never ranks places.

POST/api/v1/where-to-live
Rank places for a person's criteria

Ranks the cities, metro areas or counties of the datasets for a person's criteria: where they want to live, household, housing budget, priorities, climate, a commute destination and must-haves. Pure formulas, no model: hard filters first (each removal counted by reason), then the weighted quality of life on the person's priorities (the catalog's two-level aggregation), a climate preference as one more category, penalties for housing over budget (capped, so an otherwise ideal place stays visible and flagged) and at most perMetro results per metro area (with a commute destination the cap is lifted to limit, because every commutable place sits in one or two metro areas). Housing costs are the typical asking rent, or the mortgage payment at the current Freddie Mac rate plus property tax; commutes are straight-line estimates, not routes. Every figure's source, vintage and period are in provenance. Anonymous calls are limited to 60 a minute per client; with an API key, to 600 a minute besides the plan's daily allowance. Send Content-Type: application/json (415 otherwise).

Never cached.

Not cachedCORSErrors: 400, 401, 413, 429, 500, 503

Parameters

ratequery
numberA 30-year mortgage rate (%) used only while the published rate is missing; the response says which rate it used.≥ 0.5 · ≤ 20

Request body

application/jsonWhereToLiveCriteria

What a person looking for a place to live asked for. Every field is optional and unknown fields are ignored.

Response · 200 The ranked places.

application/jsonWhereToLiveResponse

Places ranked for a person's criteria, with the provenance of every figure.

Example

curl -X POST 'https://tryanalisa.com/api/v1/where-to-live' \
  -H 'Content-Type: application/json' \
  -d '{"level":"city","states":["TX","CO"],"sizes":["mid-size"],"housing":{"mode":"rent","monthlyBudget":2200},"household":{"adults":2,"preschoolers":1},"priorities":{"safety":5,"education":4},"climate":"mild","limit":10}'
GET/api/v1/where-to-live
Rank places for compact criteria (cacheable)

The same ranking for the compact criteria the /where-to-live page puts in its links: c is the base64url of the criteria JSON with defaults left out. An unreadable value gives the defaults, and a value with some invalid fields keeps the valid ones. Ranks the cities, metro areas or counties of the datasets for a person's criteria: where they want to live, household, housing budget, priorities, climate, a commute destination and must-haves. Pure formulas, no model: hard filters first (each removal counted by reason), then the weighted quality of life on the person's priorities (the catalog's two-level aggregation), a climate preference as one more category, penalties for housing over budget (capped, so an otherwise ideal place stays visible and flagged) and at most perMetro results per metro area (with a commute destination the cap is lifted to limit, because every commutable place sits in one or two metro areas). Housing costs are the typical asking rent, or the mortgage payment at the current Freddie Mac rate plus property tax; commutes are straight-line estimates, not routes. Every figure's source, vintage and period are in provenance.

Cached per dataset version: ETag (answer 304 to If-None-Match) and X-Dataset-Version; pin the version with v (read it from GET /api/v1/meta (version) or the X-Dataset-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 401, 429, 500, 503

Parameters

cquery
stringBase64url of the criteria JSON (see WhereToLiveCriteria).≤ 4096 chars
ratequery
numberA 30-year mortgage rate (%) used only while the published rate is missing; the response says which rate it used.≥ 0.5 · ≤ 20
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The ranked places.

application/jsonWhereToLiveResponse

Places ranked for a person's criteria, with the provenance of every figure.

Example

curl --compressed 'https://tryanalisa.com/api/v1/where-to-live?c=eyJ2IjoxLCJzdGF0ZXMiOlsiVFgiXX0'

Exports

CSV downloads of tables and rankings.

GET/api/v1/contracts/export/awards
Awards as CSV (first 10,000 rows)

The awards list with the same filters and order, as a CSV download (UTF-8 with BOM, CRLF). Streamed; one export at a time per server share (503 + Retry-After when busy). Text cells that start like a spreadsheet formula are prefixed with an apostrophe.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 429, 500, 503

Parameters

qquery
stringWords in the description (full text), or a contract number (PIID) prefix.≤ 200 chars
fyquery
integerFiscal year the award was active in (400 when not loaded).≥ 2000 · ≤ 2100
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
subtierquery
integerAwarding subtier agency id.
officequery
integerAwarding office id.
recipientquery
stringRecipient id.pattern ^\d{1,19}$
placequery
stringState FIPS or county GEOID of the place of performance.
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
competitionquery
"competed" | "not-competed" | "unknown"
flagquery
"low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18)Only awards carrying this integrity signal (award-level signals only).
sortquery
"value" | "recent" | "growth"Largest first (default), latest action first, or largest ceiling growth first.
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The CSV file (`Content-Disposition: attachment`; `X-Row-Limit: 10000`).

text/csv; charset=utf-8

Format: Columns: award_id, piid, description, award_type, awarding_agency, awarding_agency_id, recipient, recipient_id, place_of_performance, place_geoid, category, competition, offers_received, total_obligated_usd, potential_value_usd, first_action_date, last_action_date, analisa_url, source, data_through.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/export/awards?fy=2025&place=06'
GET/api/v1/contracts/export/rankings
A ranking as CSV

A server ranking (top 50, as /api/v1/contracts/rankings), or with kind=places every county or state on a map metric, ranked.

Cached per contracts version: ETag (answer 304 to If-None-Match) and X-Data-Version; pin the version with v (read it from GET /api/v1/contracts/meta (version) or the X-Data-Version header) for a response cached as immutable.

Cached per versionCORSErrors: 400, 401, 429, 500

Parameters

kindrequired
"agencies" | "offices" | "recipients" | "relationships" | "places"
levelquery
"county" | "state"kind=places only.
metricquery
stringA ranking metric, or for kind=places a map metric (default obligations).
orderquery
"desc" | "asc"
placequery
stringAgencies only: a state FIPS or county GEOID.
fyquery
integerFederal fiscal year (October–September, named by the year it ends). Default and fallback for years without data: the latest mostly complete year (defaultFiscalYear of /api/v1/contracts/meta).≥ 2000 · ≤ 2100
categoryquery
"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)Spending category (what was bought). Unknown values are ignored.
agencyquery
integerToptier agency id, one of agencies in /api/v1/contracts/meta. Other ids are ignored (400 on the awards list).> 0
vquery
stringContent version to pin. With the current version the response is immutable (cached for a year); any other value is served as the unpinned URL.≤ 64 chars

Response · 200 The CSV file.

text/csv; charset=utf-8

Format: One row per ranked entity or place, with the metric, unit, value, scope filters, source and data date.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/export/rankings?kind=places&level=state&metric=per_capita'
GET/api/v1/contracts/export/recompetes
The recompete calendar as CSV

The calendar with the same filters and order as /api/v1/contracts/recompetes, as a CSV download (UTF-8 with BOM, CRLF), streamed, at most the plan's export rows (X-Row-Limit). Part of the recompete calendar plan (Pro and above): 401 when not signed in, 403 on a plan without it. One export at a time per server share (503 + Retry-After when busy). Text cells that start like a spreadsheet formula are prefixed with an apostrophe. Private to the signed-in caller (private, revalidated by ETag).

Cached for a short time (see Cache-Control).

Short cacheErrors: 400, 401, 429, 500, 503

Parameters

windowquery
6 | 12 | 18 | 24Months ahead of today (UTC) in which the current period of performance must end. Default 18.
minquery
1000000 | 2500000 | 5000000 | 10000000 | 25000000 | 50000000 | 100000000Minimum potential value (base plus every option), US dollars. Default and smallest: 1,000,000.
agencyquery
integerAwarding toptier agency id, one of agencies in /api/v1/contracts/meta (400 otherwise). Recompete calendar plan.> 0
subtierquery
integerAwarding subtier agency id.> 0
officequery
integerAwarding office id.> 0
recipientquery
stringIncumbent recipient id.pattern ^\d{1,18}$
naicsquery
stringNAICS code prefix, 2 to 6 digits. Recompete calendar plan.pattern ^\d{2,6}$
pscquery
stringProduct and service code prefix, 1 to 4 characters. Recompete calendar plan.pattern ^[A-Za-z0-9]{1,4}$
setAsidequery
"none" | "small-business" | "8a" | "hubzone" | "sdvosb" | "wosb" | "veteran" | "indian" | … (9)Set-aside group of the award. Recompete calendar plan.
placequery
stringState FIPS or county GEOID of the place of performance (400 when unknown). Recompete calendar plan.pattern ^(?:US|\d{2}|\d{5})$
solequery
"0" | "1"1: only awards that were not competed. Recompete calendar plan.
optionsquery
"any" | "with" | "without"Only awards with options left (with) or none left (without). Recompete calendar plan.

Response · 200 The CSV file (`Content-Disposition: attachment`).

text/csv; charset=utf-8

Format: Columns: award_id, piid, description, award_type, awarding_agency, awarding_agency_id, awarding_office, incumbent, incumbent_id, place_of_performance, place_geoid, naics, psc, set_aside, competition, sole_source, potential_value_usd, total_obligated_usd, current_end_date, potential_end_date, options_remaining, days_to_end, last_action_date, analisa_url, source, data_through, as_of.

Example

curl --compressed 'https://tryanalisa.com/api/v1/contracts/export/recompetes?window=12&naics=5415'

Schemas

Named payloads, referenced by the endpoints. Objects may gain fields within v1; none is renamed or removed.

Problem

An error, as RFC 9457 problem details (application/problem+json).
typestring
Always "about:blank": the status and title say what happened.
titlestring
Short summary of the problem.
statusinteger
HTTP status code.
detailstringoptional
What to do about it, when there is something to say.

SourceInfo

Provenance of a payload: cite the publisher, the vintage and the period.
namestring
Dataset name.
publisherstring
Agency that publishes it.
attributionstring
Credit line to show with the data.
homepagestring
Where to find the original.
vintagestring | null
Release or date the data is current to (YYYY-MM-DD for contracts).
loadedAtstring | null
When Analisa last loaded a release that changed the data (ISO timestamp).

ContractsFilters

The filters a contracts payload was computed for, after normalization (fallbacks applied).
fiscalYearinteger
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13) | null
agencyIdinteger | null
Toptier agency id.

AssistanceFilters

The filters an assistance payload was computed for, after normalization (fallbacks applied).
fiscalYearinteger
typeGroup"grants" | "loans" | "direct-payments" | "insurance" | "other" | null
Assistance type group; null for every type.
agencyIdinteger | null
Toptier assistance agency id (one of agencies in /api/v1/assistance/meta).

AssistanceMeta

Loaded fiscal years, agency filter options and data freshness of federal assistance.
versionstring
Current assistance data version: pin it with v.
fiscalYearsobject[]
Newest first.
3 fields
yearinteger
monthsinteger
Months loaded (a year in progress has fewer than 12).
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
firstFiscalYearinteger | null
First fiscal year with complete history.
defaultFiscalYearinteger | null
dataThroughstring | null
Date the published data is current to (YYYY-MM-DD, the release vintage).
agenciesobject[]
Toptier agencies with assistance, largest first: the agency filter values (assistance agency ids, not contracts ids).
4 fields
idinteger
codestring
namestring
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).

AssistanceMap

One assistance value per county or state (place of performance).
versionstring
level"county" | "state"
metric"obligations" | "per_capita" | "face_value"
geoidsstring[]
Places with a value, aligned with values.
valuesnumber[]
unmappedobject
Obligations abroad or at no known place (in the national total, not on the map).
2 fields
abroadnumber
US dollars.
unknownnumber
US dollars.
statsobject
5 fields
minnumber
p10number
p50number
p90number
maxnumber

AssistanceKpis

obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
actionsnumber
newAwardsnumber
perCapitanumber | null
Obligations per resident (Census estimates).
aggregateSharenumber | null
Share of obligations reported as county aggregates (not attributed to a listed organization).
individualSharenumber | null
Share of obligations to individuals (counted, never listed).

AssistanceRankedEntity

An agency or organization in an assistance ranking (individuals and county aggregates are never listed).
idstring
Assistance agency or recipient id.
namestring
linkstring | null
The profile to open: a contracts agency or recipient id (the same organization in the contracts data), "g<id>" for a recipient with assistance only, null when there is none.
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
sharenumber
Percent (0–100).
detailstring | nulloptional
Parent agency, or the recipient's city and state.

AssistanceProgramRow

An Assistance Listing (program).
idinteger
numberstring
Assistance Listing number (formerly CFDA), e.g. "93.778".
titlestring
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
sharenumber
Percent (0–100).

AssistanceTypeRow

group"grants" | "loans" | "direct-payments" | "insurance" | "other"
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
sharenumber
Share of positive obligations (0–100).

AssistanceAwardRow

A financial assistance award (all its actions summed).
idstring
fainstring | null
Federal Award Identification Number.
descriptionstring | null
programobject | null
2 fields
numberstring
titlestring
agencystring | null
Awarding subtier agency.
assistanceTypestring
FABS assistance type code.
totalObligatednumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
totalFaceValuenumber | null
firstActionDatestring
lastActionDatestring
permalinkstring
The award on USAspending.gov.

AssistancePlaceSummary

Where a place's federal assistance comes from: types, programs, agencies and organizations.
versionstring
geoidstring
namestring
previousAssistanceKpis | null
The previous fiscal year, when loaded.
monthlyobject[]
This fiscal year and the one before, oldest first.
3 fields
monthstring
YYYY-MM
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
actionsnumber
yearlyobject[]
Every loaded fiscal year, oldest first.
2 fields
yearinteger
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
topRecipientsAssistanceRankedEntity[]

AssistanceRecipientProfile

Assistance one organization received: programs, agencies and largest awards.
versionstring
recipientobject
8 fields
idstring
"g<assistance recipient id>".
namestring
ueistring | null
SAM Unique Entity ID.
locationstring | null
countyGeoidstring | null
kindsstring[]
Recipient classes of its business types ("Nonprofits", "Colleges and universities"…).
parentNamestring | null
contractRecipientIdstring | null
The same organization in the contracts data, when it has contracts.
fiscalYearinteger
kpisobject
4 fields
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
actionsnumber
newAwardsnumber
yearlyobject[]
Every loaded fiscal year, oldest first.
3 fields
yearinteger
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
largestAwardsAssistanceAwardRow[]

AssistanceAgencyProfile

Assistance an agency awarded (a toptier: its subtiers together).
versionstring
agencyobject
4 fields
idinteger
Assistance agency id.
level"toptier" | "subtier"
codestring
namestring
fiscalYearinteger
kpisobject
4 fields
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
actionsnumber
newAwardsnumber
yearlyobject[]
Every loaded fiscal year, oldest first.
3 fields
yearinteger
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
topRecipientsAssistanceRankedEntity[]
childrenAssistanceRankedEntity[]
A toptier agency's subtiers.

AssistanceProgramRanking

Assistance Listings ranked by obligations (top 25).
versionstring
fiscalYearinteger
querystring | null
The normalized q.
typeGroup"grants" | "loans" | "direct-payments" | "insurance" | "other" | null
rowsobject[]
9 fields
idinteger
numberstring
Assistance Listing number (formerly CFDA), e.g. "93.778".
titlestring
obligationsnumber
US dollars obligated; for loans the subsidy cost (the expected cost to the government, may be negative).
faceValuenumber
Loans: face value (amounts lent or guaranteed), in US dollars. Never part of obligations.
sharenumber
Percent (0–100).
agencystring | null
newAwardsnumber
previousnumber | null
Obligations of the previous fiscal year, when loaded.
totalnumber
All obligations of the fiscal year (and type), for shares; with type=loans, all face value.

PlaceBusiness

Employer and nonemployer businesses of a place by industry, per resident and against the state and the nation.
versionstring
geoidstring
The place the figures are of. A city answers with its county.
namestring
level"state" | "metro" | "county"
requestedobject | null
The city asked about, when the figures are its county's (County Business Patterns has no city level).
3 fields
geoidstring
namestring
level"city"
stateobject | null
The state a county is compared with.
2 fields
geoidstring
namestring
periodsobject
3 fields
businessstring
Reference year of County Business Patterns, e.g. "2023".
nonemployerstring
Reference year of Nonemployer Statistics, e.g. "2024".
naicsEditionsobject
NAICS revision each survey's codes are in.
2 fields
businessinteger
nonemployerinteger
populationobject
The residents behind the per-capita figures; nonemployer is the place's population in the Nonemployer Statistics' reference year.
4 fields
placeobject | null
2 fields
valuenumber
periodstring
stateobject | null
2 fields
valuenumber
periodstring
nationobject | null
2 fields
valuenumber
periodstring
nonemployerobject | null
2 fields
valuenumber
periodstring
sourcesobject[]
Provenance: cite the publisher and the reference year with the data.
7 fields
idstring
namestring
publisherstring
homepagestring
attributionstring
Credit line to show with the data.
vintagestring | null
Release the data was loaded from.
periodstring | null
Reference year, e.g. "2023".
totalobject
All industries together.
10 fields
industryobject
6 fields
keystring
Stable slug, e.g. "restaurants".
labelstring
levelinteger
NAICS digits of the industry: 2 for a sector (and for the all-industries total), 3 to 6 for narrower industries.
naicsstring
County Business Patterns code (NAICS 2017 for the 2023 release): "00" all industries, "72", "44-45", "7225", "722511".
naicsNonemployerstring
Nonemployer Statistics code (NAICS 2022 for the 2024 release). Differs from naics for the few industries NAICS moved between editions (software publishers, gas stations, most of retail trade).
sectorstring
The two-digit NAICS sector the industry belongs to.
placeobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
stateobject | null
The state of a county (or city); null for a state and for a metro area, which can span states.
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
nationobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
per10kobject
Establishments per 10,000 residents (residents of the County Business Patterns reference year).
3 fields
placenumber | null
statenumber | null
nationnumber | null
nonemployersPer10knumber | null
Nonemployers per 10,000 residents of the Nonemployer Statistics reference year.
densityIndexobject
The place's establishments per resident divided by the nation's and by the state's: 1.00 is the same density, 1.50 half as many again.
2 fields
nationnumber | null
statenumber | null
chip"more" | "fewer" | "typical" | null
The density index against the nation in words: more at 1.25 or above, fewer at 0.80 or below, otherwise typical. Null with fewer than 10 establishments.
avgPayobject
Average annual payroll per employee, US dollars: payroll ÷ employment.
3 fields
placenumber | null
statenumber | null
nationnumber | null
residentsPerEstablishmentnumber | null
Residents per establishment. More residents per business means fewer competitors per resident; it does not measure demand.
sectorsobject[]
The 19 NAICS sectors, in NAICS order.
10 fields
industryobject
6 fields
keystring
Stable slug, e.g. "restaurants".
labelstring
levelinteger
NAICS digits of the industry: 2 for a sector (and for the all-industries total), 3 to 6 for narrower industries.
naicsstring
County Business Patterns code (NAICS 2017 for the 2023 release): "00" all industries, "72", "44-45", "7225", "722511".
naicsNonemployerstring
Nonemployer Statistics code (NAICS 2022 for the 2024 release). Differs from naics for the few industries NAICS moved between editions (software publishers, gas stations, most of retail trade).
sectorstring
The two-digit NAICS sector the industry belongs to.
placeobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
stateobject | null
The state of a county (or city); null for a state and for a metro area, which can span states.
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
nationobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
per10kobject
Establishments per 10,000 residents (residents of the County Business Patterns reference year).
3 fields
placenumber | null
statenumber | null
nationnumber | null
nonemployersPer10knumber | null
Nonemployers per 10,000 residents of the Nonemployer Statistics reference year.
densityIndexobject
The place's establishments per resident divided by the nation's and by the state's: 1.00 is the same density, 1.50 half as many again.
2 fields
nationnumber | null
statenumber | null
chip"more" | "fewer" | "typical" | null
The density index against the nation in words: more at 1.25 or above, fewer at 0.80 or below, otherwise typical. Null with fewer than 10 establishments.
avgPayobject
Average annual payroll per employee, US dollars: payroll ÷ employment.
3 fields
placenumber | null
statenumber | null
nationnumber | null
residentsPerEstablishmentnumber | null
Residents per establishment. More residents per business means fewer competitors per resident; it does not measure demand.
industriesobject[]
The narrower curated industries, in NAICS order.
10 fields
industryobject
6 fields
keystring
Stable slug, e.g. "restaurants".
labelstring
levelinteger
NAICS digits of the industry: 2 for a sector (and for the all-industries total), 3 to 6 for narrower industries.
naicsstring
County Business Patterns code (NAICS 2017 for the 2023 release): "00" all industries, "72", "44-45", "7225", "722511".
naicsNonemployerstring
Nonemployer Statistics code (NAICS 2022 for the 2024 release). Differs from naics for the few industries NAICS moved between editions (software publishers, gas stations, most of retail trade).
sectorstring
The two-digit NAICS sector the industry belongs to.
placeobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
stateobject | null
The state of a county (or city); null for a state and for a metro area, which can span states.
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
nationobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
per10kobject
Establishments per 10,000 residents (residents of the County Business Patterns reference year).
3 fields
placenumber | null
statenumber | null
nationnumber | null
nonemployersPer10knumber | null
Nonemployers per 10,000 residents of the Nonemployer Statistics reference year.
densityIndexobject
The place's establishments per resident divided by the nation's and by the state's: 1.00 is the same density, 1.50 half as many again.
2 fields
nationnumber | null
statenumber | null
chip"more" | "fewer" | "typical" | null
The density index against the nation in words: more at 1.25 or above, fewer at 0.80 or below, otherwise typical. Null with fewer than 10 establishments.
avgPayobject
Average annual payroll per employee, US dollars: payroll ÷ employment.
3 fields
placenumber | null
statenumber | null
nationnumber | null
residentsPerEstablishmentnumber | null
Residents per establishment. More residents per business means fewer competitors per resident; it does not measure demand.

BusinessIndustries

The industries of the catalog with their national business figures.
versionstring
periodsobject
3 fields
businessstring
Reference year of County Business Patterns, e.g. "2023".
nonemployerstring
Reference year of Nonemployer Statistics, e.g. "2024".
naicsEditionsobject
NAICS revision each survey's codes are in.
2 fields
businessinteger
nonemployerinteger
populationobject | null
2 fields
valuenumber
periodstring
sourcesobject[]
7 fields
idstring
namestring
publisherstring
homepagestring
attributionstring
Credit line to show with the data.
vintagestring | null
Release the data was loaded from.
periodstring | null
Reference year, e.g. "2023".
industriesobject[]
The all-industries total first, then the sectors, then the narrower industries, in NAICS order.
4 fields
industryobject
6 fields
keystring
Stable slug, e.g. "restaurants".
labelstring
levelinteger
NAICS digits of the industry: 2 for a sector (and for the all-industries total), 3 to 6 for narrower industries.
naicsstring
County Business Patterns code (NAICS 2017 for the 2023 release): "00" all industries, "72", "44-45", "7225", "722511".
naicsNonemployerstring
Nonemployer Statistics code (NAICS 2022 for the 2024 release). Differs from naics for the few industries NAICS moved between editions (software publishers, gas stations, most of retail trade).
sectorstring
The two-digit NAICS sector the industry belongs to.
nationobject
5 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
per10knumber | null
Establishments per 10,000 US residents.
avgPaynumber | null

IndustryPlaces

Metro areas or counties ranked for one industry, with figures per resident.
versionstring
industryobject
6 fields
keystring
Stable slug, e.g. "restaurants".
labelstring
levelinteger
NAICS digits of the industry: 2 for a sector (and for the all-industries total), 3 to 6 for narrower industries.
naicsstring
County Business Patterns code (NAICS 2017 for the 2023 release): "00" all industries, "72", "44-45", "7225", "722511".
naicsNonemployerstring
Nonemployer Statistics code (NAICS 2022 for the 2024 release). Differs from naics for the few industries NAICS moved between editions (software publishers, gas stations, most of retail trade).
sectorstring
The two-digit NAICS sector the industry belongs to.
periodsobject
3 fields
businessstring
Reference year of County Business Patterns, e.g. "2023".
nonemployerstring
Reference year of Nonemployer Statistics, e.g. "2024".
naicsEditionsobject
NAICS revision each survey's codes are in.
2 fields
businessinteger
nonemployerinteger
previousPeriodstring | null
The reference year before the latest in the same NAICS edition, when the tables hold one; growth needs it.
filtersobject
The filters applied, after defaults.
8 fields
level"metro" | "county"
statestring | null
minPopulationinteger
minEstablishmentsinteger
sort"residents" | "density" | "establishments" | "employment" | "pay" | "nonemployers" | "growth" | "population"
order"asc" | "desc"
limitinteger
offsetinteger
totalinteger
Places that passed the filters; rows is one page of them.
nationobject
7 fields
establishmentsinteger | null
Employer establishments. Zero where the Census Bureau publishes no establishment in the industry.
employmentinteger | null
Paid employees in the pay period including March 12. Noise-infused by the Census Bureau; null where it is withheld, and for a metro area when any member county's is.
annualPayrollnumber | null
Annual payroll, US dollars. Same caveats as employment.
nonemployersinteger | null
Nonemployer businesses (no paid employees, mostly sole proprietors), from the Nonemployer Statistics' own reference year. Null where it is not published.
flagsstring[]
Data-quality notes: "employment-noise-medium", "employment-noise-high", "payroll-noise-medium", "payroll-noise-high", "receipts-noise-…" (the Census Bureau moved the figure by 2–5% / more than 5% to protect confidentiality), "…-withheld", "aggregated" (a metro area, summed from its counties).
per10knumber | null
avgPaynumber | null
populationobject | null
US residents in the County Business Patterns reference year.
2 fields
valuenumber
periodstring
rowsobject[]
17 fields
geoidstring
namestring
pathstring | null
The place's page on this site.
stateCodestring | null
USPS code; a metro area's principal state.
level"metro" | "county"
populationnumber | null
Residents in the County Business Patterns reference year.
establishmentsinteger | null
employmentinteger | null
annualPayrollnumber | null
nonemployersinteger | null
per10knumber | null
Establishments per 10,000 residents.
residentsPerEstablishmentnumber | null
avgPaynumber | null
densityIndexnumber | null
Density over the nation's (1.00 = the nation's).
chip"more" | "fewer" | "typical" | null
growthnumber | null
Relative change of establishments (percent) since the previous reference year of the same NAICS edition. Null while the tables hold one year.
flagsstring[]
federalobject | null
Federal contract obligations in the industry's NAICS codes, nationally and by place. Null when the contracts data is not loaded.
7 fields
fiscalYearinteger
monthsinteger
Months of the fiscal year with loaded actions (fewer than 12 while it is in progress).
scopestring
The NAICS code(s) matched, e.g. "NAICS 7225" or "NAICS 5132, 5112": both editions, since contract actions carry the edition current when they were signed.
obligationsnumber
Federal contract obligations in the fiscal year, nationwide, US dollars.
awardsinteger
Awards with an action in the year, counted once per county where they were performed.
placesobject
The ten places of each level where the most was performed (place of performance). Metro areas are exact sums of their counties; cities are estimated from ZIP codes and are part of their counties' figures.
3 fields
metrosobject[]
6 fields
geoidstring
namestring
pathstring | null
The place's page on this site.
obligationsnumber
US dollars.
awardsinteger
Awards with an action in the year, counted once per county (or city) of their actions.
sharenumber | null
Percent of the nation's obligations in the industry.
countiesobject[]
6 fields
geoidstring
namestring
pathstring | null
The place's page on this site.
obligationsnumber
US dollars.
awardsinteger
Awards with an action in the year, counted once per county (or city) of their actions.
sharenumber | null
Percent of the nation's obligations in the industry.
citiesobject[]
6 fields
geoidstring
namestring
pathstring | null
The place's page on this site.
obligationsnumber
US dollars.
awardsinteger
Awards with an action in the year, counted once per county (or city) of their actions.
sharenumber | null
Percent of the nation's obligations in the industry.
sourceobject
6 fields
namestring
publisherstring
attributionstring
homepagestring
vintagestring | null
loadedAtstring | null
sourcesobject[]
7 fields
idstring
namestring
publisherstring
homepagestring
attributionstring
Credit line to show with the data.
vintagestring | null
Release the data was loaded from.
periodstring | null
Reference year, e.g. "2023".

PlaceChanges

What changed in a place over about five years, with significance, direction and peer comparison, and the places like it that improved.
versionstring
geoidstring
namestring
level"state" | "metro" | "county" | "city"
peersinteger
Ranked places of the level (cities: at least 1,000 residents) the changes are compared with.
summaryobject
Indicators by verdict.
5 fields
improvedinteger
declinedinteger
unchangedinteger
uncertaininteger
totalinteger
improvementsobject[]
Up to five largest improvements, most favourable against peers first.
16 fields
keystring
Indicator key (see /api/v1/meta).
unitstring
direction"higher" | "lower" | "neutral"
Which way is better. Only indicators with a direction are compared.
fromobject
The earlier value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
toobject
The current value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
yearsnumber
Years between the end of the two periods.
deltanumber
to.value - from.value in the indicator's unit.
relativenumber | null
Relative change in percent. Null when the earlier value is zero.
measure"points" | "percent" | "absolute"
How changes are compared across places: points (difference of percentages), percent (relative change, for amounts and rates) or absolute (difference in the indicator's unit).
measurednumber
The change in that measure (the one peers compares).
marginnumber | null
90% margin of the difference: 1.645 × the square root of the sum of the two squared standard errors. Null unless both values have one.
significance"real" | "within-margin" | "unassessed"
real: the change is larger than margin. within-margin: it is not. unassessed: no margin is published.
verdict"improved" | "declined" | "unchanged" | "uncertain"
improved/declined: the change is real (or, with no margin published, at least 5%) and moves in the direction the catalog calls better/worse. uncertain: within the margin of error. unchanged: too small to matter (under 2% for a real change, as relative percent; one point of a percentage weighs 5%).
peersobject
4 fields
countinteger
Places of the level that have the same two periods.
betterThannumber | null
Share (0–100) of those places whose change was less favourable, direction applied (100 = the most favourable change). Null with fewer than 20 places.
typicalnumber | null
The typical (median) change of those places in the same measure as measured. Null with too few places.
znumber | null
The place's change as a distance from the typical change in robust standard deviations (1.4826 × the median absolute deviation); favourable is positive. Null with too few places or no spread.
sourcestring
Publisher dataset id both values come from (see sources).
standingobject | null
The place's standing among the places of the level at each period. Null when the place lacks a standing.
2 fields
beforenumber
Percentile (0–100) of the earlier value among the places of the level at that period, direction applied (100 = best).
afternumber
The same for the current value.
declinesobject[]
Up to five largest declines, least favourable against peers first.
16 fields
keystring
Indicator key (see /api/v1/meta).
unitstring
direction"higher" | "lower" | "neutral"
Which way is better. Only indicators with a direction are compared.
fromobject
The earlier value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
toobject
The current value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
yearsnumber
Years between the end of the two periods.
deltanumber
to.value - from.value in the indicator's unit.
relativenumber | null
Relative change in percent. Null when the earlier value is zero.
measure"points" | "percent" | "absolute"
How changes are compared across places: points (difference of percentages), percent (relative change, for amounts and rates) or absolute (difference in the indicator's unit).
measurednumber
The change in that measure (the one peers compares).
marginnumber | null
90% margin of the difference: 1.645 × the square root of the sum of the two squared standard errors. Null unless both values have one.
significance"real" | "within-margin" | "unassessed"
real: the change is larger than margin. within-margin: it is not. unassessed: no margin is published.
verdict"improved" | "declined" | "unchanged" | "uncertain"
improved/declined: the change is real (or, with no margin published, at least 5%) and moves in the direction the catalog calls better/worse. uncertain: within the margin of error. unchanged: too small to matter (under 2% for a real change, as relative percent; one point of a percentage weighs 5%).
peersobject
4 fields
countinteger
Places of the level that have the same two periods.
betterThannumber | null
Share (0–100) of those places whose change was less favourable, direction applied (100 = the most favourable change). Null with fewer than 20 places.
typicalnumber | null
The typical (median) change of those places in the same measure as measured. Null with too few places.
znumber | null
The place's change as a distance from the typical change in robust standard deviations (1.4826 × the median absolute deviation); favourable is positive. Null with too few places or no spread.
sourcestring
Publisher dataset id both values come from (see sources).
standingobject | null
The place's standing among the places of the level at each period. Null when the place lacks a standing.
2 fields
beforenumber
Percentile (0–100) of the earlier value among the places of the level at that period, direction applied (100 = best).
afternumber
The same for the current value.
changesobject[]
Every indicator with a comparable history, in catalog order.
16 fields
keystring
Indicator key (see /api/v1/meta).
unitstring
direction"higher" | "lower" | "neutral"
Which way is better. Only indicators with a direction are compared.
fromobject
The earlier value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
toobject
The current value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
yearsnumber
Years between the end of the two periods.
deltanumber
to.value - from.value in the indicator's unit.
relativenumber | null
Relative change in percent. Null when the earlier value is zero.
measure"points" | "percent" | "absolute"
How changes are compared across places: points (difference of percentages), percent (relative change, for amounts and rates) or absolute (difference in the indicator's unit).
measurednumber
The change in that measure (the one peers compares).
marginnumber | null
90% margin of the difference: 1.645 × the square root of the sum of the two squared standard errors. Null unless both values have one.
significance"real" | "within-margin" | "unassessed"
real: the change is larger than margin. within-margin: it is not. unassessed: no margin is published.
verdict"improved" | "declined" | "unchanged" | "uncertain"
improved/declined: the change is real (or, with no margin published, at least 5%) and moves in the direction the catalog calls better/worse. uncertain: within the margin of error. unchanged: too small to matter (under 2% for a real change, as relative percent; one point of a percentage weighs 5%).
peersobject
4 fields
countinteger
Places of the level that have the same two periods.
betterThannumber | null
Share (0–100) of those places whose change was less favourable, direction applied (100 = the most favourable change). Null with fewer than 20 places.
typicalnumber | null
The typical (median) change of those places in the same measure as measured. Null with too few places.
znumber | null
The place's change as a distance from the typical change in robust standard deviations (1.4826 × the median absolute deviation); favourable is positive. Null with too few places or no spread.
sourcestring
Publisher dataset id both values come from (see sources).
standingobject | null
The place's standing among the places of the level at each period. Null when the place lacks a standing.
2 fields
beforenumber
Percentile (0–100) of the earlier value among the places of the level at that period, direction applied (100 = best).
afternumber
The same for the current value.
similarobject
2 fields
selfobject | null
The place's own mean change of standing over the same indicators.
2 fields
gainnumber
comparedinteger
placesobject[]
Up to five of the places most alike in the earlier period with the most net improvements, then the largest gain in standing; only places with more improvements than declines whose standing rose.
11 fields
geoidstring
namestring
stateCodestring | null
pathstring
Page path on this site.
similaritynumber
0–1: how alike this place and the one asked about looked in the earlier period (1 minus the root-mean-square difference of standings).
netinteger
Indicators with verdict improved minus indicators with verdict declined in this place: the ranking key, since a real change cannot be produced by noise.
gainnumber
Mean change of the place's standing (percentile points) over the compared indicators it has in both periods; positive = rose.
comparedinteger
improvedinteger
Indicators whose verdict is improved in this place.
declinedinteger
topobject[]
What improved most here (up to 3), most favourable against peers first.
16 fields
keystring
Indicator key (see /api/v1/meta).
unitstring
direction"higher" | "lower" | "neutral"
Which way is better. Only indicators with a direction are compared.
fromobject
The earlier value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
toobject
The current value.
3 fields
periodstring
Period label: "2020-2024" (5-year estimate) or "2025" (annual).
valuenumber
The indicator's value in its own unit.
standardErrornumber | null
Standard error when the publisher gives uncertainty (90% margin of error ÷ 1.645); null otherwise.
yearsnumber
Years between the end of the two periods.
deltanumber
to.value - from.value in the indicator's unit.
relativenumber | null
Relative change in percent. Null when the earlier value is zero.
measure"points" | "percent" | "absolute"
How changes are compared across places: points (difference of percentages), percent (relative change, for amounts and rates) or absolute (difference in the indicator's unit).
measurednumber
The change in that measure (the one peers compares).
marginnumber | null
90% margin of the difference: 1.645 × the square root of the sum of the two squared standard errors. Null unless both values have one.
significance"real" | "within-margin" | "unassessed"
real: the change is larger than margin. within-margin: it is not. unassessed: no margin is published.
verdict"improved" | "declined" | "unchanged" | "uncertain"
improved/declined: the change is real (or, with no margin published, at least 5%) and moves in the direction the catalog calls better/worse. uncertain: within the margin of error. unchanged: too small to matter (under 2% for a real change, as relative percent; one point of a percentage weighs 5%).
peersobject
4 fields
countinteger
Places of the level that have the same two periods.
betterThannumber | null
Share (0–100) of those places whose change was less favourable, direction applied (100 = the most favourable change). Null with fewer than 20 places.
typicalnumber | null
The typical (median) change of those places in the same measure as measured. Null with too few places.
znumber | null
The place's change as a distance from the typical change in robust standard deviations (1.4826 × the median absolute deviation); favourable is positive. Null with too few places or no spread.
sourcestring
Publisher dataset id both values come from (see sources).
standingobject | null
The place's standing among the places of the level at each period. Null when the place lacks a standing.
2 fields
beforenumber
Percentile (0–100) of the earlier value among the places of the level at that period, direction applied (100 = best).
afternumber
The same for the current value.
sourcesobject[]
Provenance: cite the publisher and the periods with the data.
5 fields
idstring
namestring
publisherstring
homepagestring
attributionstring

SubawardParty

An organization seen in subaward reports.
ueistring
SAM Unique Entity ID.
namestring
locationstring | null
recipientIdstring | null
Contract recipient id with the same UEI (for /api/v1/contracts/recipients/{id}), when it has one.

SubawardRankedParty

ueistring
SAM Unique Entity ID.
namestring
locationstring | null
recipientIdstring | null
Contract recipient id with the same UEI (for /api/v1/contracts/recipients/{id}), when it has one.
amountnumber
US dollars reported by the prime.
subawardsnumber
sharenumber | null
Share (0–100) of all subawards in the same scope and role.

SubawardsKindTotals

kind"procurement" | "grant"
procurement (sub-contracts under contracts) or grant (sub-grants under assistance).
subawardsnumber
amountnumber
US dollars reported by the prime.

SubawardsAward

Subawards reported on one contract award: totals, largest sub-recipients and subawards.
firstFiscalYearinteger | null
First fiscal year of subaward history loaded (null before the first load).
awardIdstring
primeObligatednumber
The prime's obligations to date (contract data).
obligatedSinceobject | null
The prime's obligations since the first fiscal year of subawards loaded: the denominator of shareOfObligations.
2 fields
fiscalYearinteger
amountnumber
US dollars.
reportedobject | null
Null when the prime reported no subawards.
7 fields
subawardsnumber
amountnumber
US dollars reported by the prime.
subRecipientsnumber
duplicatesnumber
Reports of the same action filed again, left out.
firstActionDatestring
lastActionDatestring
shareOfObligationsnumber | null
Reported subawards as a percent of the prime's obligations over the same years. Not clamped: over 100 is itself a reporting finding (cumulative amounts, repeated reports).
topSubRecipientsSubawardRankedParty[]
subawardsobject[]
The largest subawards (reports that count).
7 fields
idstring
subawardNumberstring
amountnumber
US dollars reported by the prime.
actionDatestring
subRecipientSubawardParty | null
placestring | null
Place of performance (or the sub-recipient's address).
descriptionstring | null
The prime's text, with contact details and people's names removed.

SubawardsRecipient

A contract recipient in subaward reports, as a prime and as a sub-recipient (matched by UEI).
firstFiscalYearinteger | null
First fiscal year of subaward history loaded (null before the first load).
recipientIdstring
ueistring | null
fiscalYearinteger
asPrimeobject
What it reported paying others.
5 fields
subRecipientsnumber
contractObligationsnumber
The recipient's contract obligations in the fiscal year, next to its reported sub-contracts.
subcontractSharenumber | null
asSubobject
Primes that reported paying it.
3 fields
primesnumber
yearsobject[]
Amounts by fiscal year in both roles (every loaded year).
3 fields
fiscalYearinteger
asPrimenumber
US dollars reported by the prime.
asSubnumber
US dollars reported by the prime.

SubawardsAgency

Subawards under a toptier or subtier agency's prime awards.
firstFiscalYearinteger | null
First fiscal year of subaward history loaded (null before the first load).
agencyIdinteger
fiscalYearinteger
subRecipientsnumber

FeatureAccess

What the caller's plan shows of a list. Rows beyond limit are never sent to a caller without the feature.
feature"competitorTracking" | "teamingPartners"
The paid feature that widens this payload.
fullboolean
The caller's plan includes the feature: the full lists are in this payload.
limitinteger
Rows per list in this payload (3 without the feature, 25 with it).

CompanyMarket

A market (subtier agency × NAICS industry group) of the company.
agencyIdinteger
Awarding subtier agency id.
agencyNamestring
naicsstring
NAICS industry group: the first four digits of the award's NAICS code.
naicsNamestring
companynumber
The company's obligations in the market over the window.

CompetitorMarket

A market both companies sell in, with each side's obligations over the window.
agencyIdinteger
Awarding subtier agency id.
agencyNamestring
naicsstring
NAICS industry group: the first four digits of the award's NAICS code.
naicsNamestring
companynumber
The company's obligations in the market over the window.
competitornumber
The competitor's obligations in the market over the window.

Competitor

A company that competes with the company in its markets.
idstring
Recipient id of the competitor company (the representative of its family).
namestring
locationstring | null
entitiesinteger
Legal entities in its company family; 1 without a family.
similaritynumber
Weighted Jaccard index of the two companies' obligations by market, 0 to 1: overlap / (company + competitor − overlap). Grows with the dollars both hold in common markets and shrinks with the dollars each holds elsewhere, so a company of the same size and mix ranks above a giant that merely also sells there.
overlapnumber
Dollars both hold in shared markets: the smaller of the two in each market, summed.
overlapSharenumber
overlap as a percent of the company's obligations over the window.
obligationsnumber
The competitor's obligations over the window (all of its markets).
yearsobject[]
Its obligations in each fiscal year of the window, zero included.
2 fields
fiscalYearinteger
obligationsnumber
US dollars.
changenumber | null
Percent change between the last two complete fiscal years of the window; null when it cannot be told.
sharedMarketsCompetitorMarket[]
The shared markets with the most overlap (up to three).
sharedMarketCountinteger
Shared markets in total (among the company's largest 300).

CompetitorsRecipient

The competitors of a company: other companies that win from the same buyers in the same markets, from prime contract obligations over three fiscal years.
recipientIdstring
The recipient asked for.
companyobject
3 fields
idstring
Recipient id of the company (the representative of its family): opens /api/v1/contracts/recipients/{id}.
namestring
entitiesinteger
Legal entities (UEIs) in its company family; 1 without a family.
fiscalYearinteger
The fiscal year the window ends in.
windowobject
Fiscal years compared: the last three up to fiscalYear, within the loaded history.
3 fields
frominteger
tointeger
inProgressboolean
The last fiscal year is not complete yet.
obligationsnumber
The company's obligations over the window.
marketCountinteger
Markets the company sells in (its largest 300 are compared).
marketsCompanyMarket[]
The company's largest markets.
competitorsCompetitor[]
Most similar first: 3 without the plan, up to 25 with it.
foundinteger
Competitors found (up to 25); competitors may show fewer.

TeamingPartner

A company the company reported paying, or a prime that reported paying it. A partner that is a contract recipient is its whole company family (recipientId is its representative).
ueistring
SAM Unique Entity ID.
namestring
locationstring | null
recipientIdstring | null
Contract recipient id with the same UEI (for /api/v1/contracts/recipients/{id}), when it has one.
amountnumber
US dollars reported by primes (FFATA first-tier subawards): inside the primes' obligations, never added to anyone's prime totals.
subawardsnumber
fiscalYearsinteger[]
Fiscal years with a report between the two.
industriesobject[]
NAICS industry groups of the prime awards behind the relationship with the most reported money (up to two; sub-contracts under contracts only).
3 fields
naicsstring
naicsNamestring
amountnumber
US dollars.
agenciesobject[]
Awarding subtier agencies of those prime awards (up to two).
3 fields
agencyIdinteger | null
agencyNamestring
amountnumber
US dollars.

TeamingRole

The partners of a company in one role.
totalinteger
Distinct partner companies in this role.
amountnumber
US dollars reported by primes (FFATA first-tier subawards): inside the primes' obligations, never added to anyone's prime totals.
partnersTeamingPartner[]
The largest partners by reported amount: 3 without the plan, up to 25 with it.

PotentialPartner

A company with no report with the company, in either direction, that sub-contracts for the company's competitors.
ueistring
SAM Unique Entity ID.
namestring
locationstring | null
recipientIdstring | null
Contract recipient id with the same UEI (for /api/v1/contracts/recipients/{id}), when it has one.
amountnumber
Reported by the competitors below.
subawardsnumber
competitorsinteger
How many of the company's competitors reported paying it.
viaobject[]
The competitors that paid it the most (up to three), with the reported amount.
3 fields
idstring
namestring
amountnumber
US dollars.

TeamingRecipient

A company's teaming partners: who it passes subcontract money to, who passes it money, and potential partners. Organizations only.
firstFiscalYearinteger | null
First fiscal year of subaward history loaded (null before the first load).
recipientIdstring
companyobject
3 fields
idstring
Recipient id of the company (the representative of its family): opens /api/v1/contracts/recipients/{id}.
namestring
entitiesinteger
Legal entities (UEIs) in its company family; 1 without a family.
fiscalYearsinteger[]
Fiscal years in which the company appears in subaward reports, in either role.
subcontractorsTeamingRole
Companies it reported paying (as a prime).
primesTeamingRole
Primes that reported paying it (as a sub-recipient).
potentialobject | null
Potential partners: null without the teamingPartners plan (and when the company has no competitors).
2 fields
competitorsinteger
Competitors whose subcontractors were searched.

CongressSource

Provenance of one source behind a Congress or elections payload.
idstring
namestring
publisherstring
attributionstring
Credit line to show with the data (Voteview's is the required citation).
homepagestring
licensestring
vintagestring | null
loadedAtstring | null

CongressTally

Recorded positions on a roll call.
yeainteger
nayinteger
presentinteger
notVotinginteger

CongressMemberRef

A member of Congress.
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null

CongressSummary

A loaded Congress with its roll calls, bills and laws.
congressinteger
startstring
YYYY-MM-DD.
endstring
YYYY-MM-DD.
planstring | null
District plan the House sat in (null until the Census publishes it).
currentboolean
votesobject
Roll calls loaded per chamber.
2 fields
houseinteger
senateinteger
billsinteger
lawsinteger
lastVoteOnstring | null

CongressMeta

Loaded Congresses, the next election, district plans and provenance.
versionstring
Congress data version (pin it with v).
currentCongressinteger
congressesCongressSummary[]
Loaded Congresses, newest first.
electionobject
The next federal general election.
2 fields
cycleinteger
datestring
YYYY-MM-DD.
moneyPlanstring
District plan contract money is attributed to.
moneyFiscalYearsinteger[]
Fiscal years of contract money by district (the fy values of /api/v1/congress/money).
shapesRecord<string, string>
Content hash of each plan's district shapes (/api/v1/geo/shards/districts/{plan}?h=).
updatedAtstring | null

CongressMemberStats

A member's activity in one Congress and chamber; every rate has its denominator beside it.
votesinteger
Roll calls held while the member served.
missedinteger
unityVotesinteger
Party-unity votes (most voting Democrats against most voting Republicans) the member cast a yea or nay on.
withPartyinteger
Of unityVotes, those cast with the caucus majority.
nominatenumber | null
DW-NOMINATE first dimension (Voteview), −1 to 1.
sponsoredinteger
enactedinteger
cosponsoredinteger
crossPartyCosponsoredinteger
Cosponsored bills whose sponsor caucuses with the other party.

CongressChamber

Everyone who sat in a chamber during a Congress, with seat and activity.
versionstring
congressinteger
chamber"house" | "senate"
referenceDatestring
Today for the current Congress, its last day otherwise.
planstring | null
membersobject[]
14 fields
idstring
namestring
lastNamestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
caucus"D" | "R" | "I" | "L" | "O"
The party the member's votes are compared with (independents caucus with one).
statestring
districtinteger | null
House district number (0 at large); null for senators.
districtIdstring | null
seatstring
The district id, or state and Senate class ("CA-S1").
delegateboolean
fromstring
YYYY-MM-DD.
tostring
YYYY-MM-DD.
seatedboolean
Holds the seat on referenceDate.
vacanciesstring[]
Seats vacant on the reference date.
rollCallsinteger
Roll calls of the Congress in the chamber (the denominator of attendance).
unityRollCallsinteger

CongressVoteSummary

A recorded roll call.
idstring
"h119-2-245": chamber initial, Congress, session, roll number.
chamber"house" | "senate"
congressinteger
sessioninteger
rollinteger
datestring
YYYY-MM-DD.
timestring | null
HH:MM as published (House only; Voteview has no time).
questionstring
category"passage" | "amendment" | "procedural" | "cloture" | "nomination" | "other"
Kind of question: passage, amendment, procedural, cloture, nomination or other.
resultstring
passedboolean | null
measureobject | null
The measure voted on, as the record names it.
3 fields
labelstring
billIdstring | null
titlestring | null
byPartyRecord<string, CongressTally>
partyUnityboolean
Most voting Democrats opposed most voting Republicans.

CongressVotesPage

A page of roll calls, newest first.
versionstring
nextstring | null
Pass back as cursor for the next page; null on the last.

CongressBillSummary

A bill or resolution.
idstring
"119-hr-4365".
congressinteger
type"hr" | "s" | "hjres" | "sjres" | "hconres" | "sconres" | "hres" | "sres"
numberinteger
labelstring
"H.R. 4365".
titlestring
introducedOnstring
YYYY-MM-DD.
sponsorCongressMemberRef | null
The sponsor as of introduction.
policyAreastring | null
CRS policy area (one per measure).
stage"introduced" | "reported" | "passed_one" | "passed_both" | "to_president" | "law" | "vetoed" | "failed"
Furthest stage reached, from the Library of Congress action codes.
latestActionOnstring | null
latestActionstring | null
lawsstring[]
Public law numbers ("119-21").
cosponsorsinteger
crossPartyCosponsorsinteger

CongressBillsPage

A page of bills, latest action first (relevance first for a text search).
versionstring
nextstring | null
Pass back as cursor for the next page; null on the last.
totalinteger | null
Bills matching the filters.

CongressVote

A roll call with every member's recorded position.
idstring
"h119-2-245": chamber initial, Congress, session, roll number.
chamber"house" | "senate"
congressinteger
sessioninteger
rollinteger
datestring
YYYY-MM-DD.
timestring | null
HH:MM as published (House only; Voteview has no time).
questionstring
category"passage" | "amendment" | "procedural" | "cloture" | "nomination" | "other"
Kind of question: passage, amendment, procedural, cloture, nomination or other.
resultstring
passedboolean | null
measureobject | null
The measure voted on, as the record names it.
3 fields
labelstring
billIdstring | null
titlestring | null
byPartyRecord<string, CongressTally>
partyUnityboolean
Most voting Democrats opposed most voting Republicans.
versionstring
descriptionstring | null
amendmentstring | null
voteTypestring | null
sourceUrlstring
The official record (House Clerk) or Voteview's.
sourceIdstring
Source of the positions: house-clerk-votes or voteview.
planstring | null
District plan of the House members' districtId.
positionsobject[]
8 fields
idstring
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
districtIdstring | null
position"yea" | "nay" | "present" | "not_voting" | "other"
As recorded: yea, nay, present, not_voting (pairs and announcements included), other (a vote for a name, as in the election of the Speaker).
detailstring | null
The name voted for (Speaker elections) or a pair or announcement code.
defectedboolean
A Democrat or Republican who voted yea or nay against the majority of their party's voting members.
relatedCongressVoteSummary[]
Other roll calls on the same measure, oldest first.

CongressBill

A bill's record: history, cosponsors, roll calls, CRS summary, committees and lobbying.
idstring
"119-hr-4365".
congressinteger
type"hr" | "s" | "hjres" | "sjres" | "hconres" | "sconres" | "hres" | "sres"
numberinteger
labelstring
"H.R. 4365".
titlestring
introducedOnstring
YYYY-MM-DD.
sponsorCongressMemberRef | null
The sponsor as of introduction.
policyAreastring | null
CRS policy area (one per measure).
stage"introduced" | "reported" | "passed_one" | "passed_both" | "to_president" | "law" | "vetoed" | "failed"
Furthest stage reached, from the Library of Congress action codes.
latestActionOnstring | null
latestActionstring | null
lawsstring[]
Public law numbers ("119-21").
cosponsorsinteger
crossPartyCosponsorsinteger
versionstring
officialTitlestring | null
summarystring | null
The latest CRS summary.
summaryLabelstring | null
summaryOnstring | null
subjectsstring[]
committeesobject[]
Committees the measure was referred to.
3 fields
idstring
namestring
chamberstring
actionsobject[]
6 fields
datestring
YYYY-MM-DD.
textstring
typestring | null
codestring | null
sourcestring | null
voteIdsstring[]
cosponsorListobject[]
9 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
originalboolean
datestring
YYYY-MM-DD.
withdrawnOnstring | null
votesCongressVoteSummary[]
Roll calls on the measure, oldest first.
agenciesobject[]
Toptier agencies under the referred committees' jurisdiction (Analisa's mapping).
3 fields
codestring
namestring
agencyIdinteger | null
lobbyingobject | null
Organizations that named the bill in lobbying reports (House Clerk, LDA); disclosed activity, never evidence of influence. Null when none did.
4 fields
organizationsobject[]
8 fields
idinteger
namestring
reportsinteger
spendnumber
What the organization reported spending in the reports naming the bill; a report's amount covers all its issues, so this is an upper bound.
recipientIdstring | null
Contract recipient the organization is matched to (AI), when any.
recipientNamestring | null
contractObligationsnumber | null
The matched recipient's contract obligations in fiscalYear; null without a match or obligations.
probabilitynumber | null
AI link probability (0–1) of the match; null without one.
reportsinteger
yearsinteger[]
fiscalYearinteger | null
Fiscal year of contractObligations: the latest closed fiscal year loaded.
congressGovUrlstring

CongressMember

A member's terms, committees, recorded voting per Congress, ideology placement, votes and sponsored bills.
versionstring
idstring
slugstring
namestring
firstNamestring
lastNamestring
birthYearinteger | null
genderstring | null
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
caucus"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
partyNamestring
chamber"house" | "senate"
statestring
districtinteger | null
districtIdstring | null
delegateboolean
currentboolean
In office today.
sincestring
First day in Congress, as far as the loaded terms go back.
termsobject[]
6 fields
chamber"house" | "senate"
startstring
YYYY-MM-DD.
endstring
YYYY-MM-DD.
statestring
districtinteger | null
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
contactobject
4 fields
websitestring | null
officestring | null
phonestring | null
contactFormstring | null
committeesobject[]
8 fields
committeeIdstring
namestring
parentIdstring | null
parentNamestring | null
titlestring | null
sidestring | null
rankinteger | null
currentboolean
recordobject[]
Per loaded Congress and chamber served, newest first.
4 fields
congressinteger
chamber"house" | "senate"
rankobject
Rank (1 = highest rate) among members with at least 100 roll calls; null under that.
3 fields
loyaltyinteger | null
missedinteger | null
ofinteger
ideologyobject | null
DW-NOMINATE placement (Voteview) in the latest Congress scored, with the party medians and the chamber's range.
5 fields
congressinteger
chamber"house" | "senate"
dim1number
partyMediansRecord<string, number>
chamberRange[number, number]
recentVotesobject[]
Latest passage and amendment votes.
3 fields
position"yea" | "nay" | "present" | "not_voting" | "other"
As recorded: yea, nay, present, not_voting (pairs and announcements included), other (a vote for a name, as in the election of the Speaker).
withPartyboolean | null
Voted with the majority of their party (null when not a yea or nay, or the party had no majority).
breaksobject[]
Latest passage and amendment party-unity votes against the caucus majority.
3 fields
position"yea" | "nay" | "present" | "not_voting" | "other"
As recorded: yea, nay, present, not_voting (pairs and announcements included), other (a vote for a name, as in the election of the Speaker).
withPartyboolean | null
Voted with the majority of their party (null when not a yea or nay, or the party had no majority).
sponsoredobject
5 fields
totalinteger
enactedinteger
byStageRecord<string, integer>
byAreaobject[]
2 fields
areastring
countinteger
idsobject
5 fields
govtrackinteger | null
opensecretsstring | null
wikidatastring | null
ballotpediastring | null
fecstring[]

CongressCommittee

A committee or subcommittee: members, subcommittees, agencies in its jurisdiction and bills.
versionstring
idstring
namestring
chamberstring
kindstring
urlstring | null
parentobject | null
2 fields
idstring
namestring
subcommitteesobject[]
3 fields
idstring
namestring
membersinteger
membersobject[]
Current members as published.
9 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
titlestring | null
sidestring | null
rankinteger | null
agenciesobject[]
Toptier agencies in its jurisdiction (Analisa's mapping) with their contract obligations in fiscalYear.
4 fields
codestring
namestring
agencyIdinteger | null
obligationsnumber | null
fiscalYearinteger | null
Fiscal year of the agencies' obligations: the latest closed fiscal year loaded.
jurisdictionNotestring | null
billsobject
Bills referred to it in the current Congress.
5 fields
congressinteger
referredinteger
reportedinteger
enactedinteger

CongressPatterns

How a chamber voted in a Congress, over recorded roll calls.
versionstring
congressinteger
chamber"house" | "senate"
rollCallsinteger
unityRollCallsinteger
categoriesobject[]
3 fields
category"passage" | "amendment" | "procedural" | "cloture" | "nomination" | "other"
Kind of question: passage, amendment, procedural, cloture, nomination or other.
countinteger
passedinteger
calendarobject[]
2 fields
datestring
YYYY-MM-DD.
votesinteger
unityByMonthobject[]
3 fields
monthstring
YYYY-MM.
rollCallsinteger
unityinteger
bipartisanobject
How often a majority of each party voted the same way, over votes both parties cast.
2 fields
votesinteger
agreedinteger
mavericksobject[]
Members with the most party-unity votes against their caucus majority.
8 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
breaksinteger
unityVotesinteger
funnelobject[]
2 fields
stage"introduced" | "reported" | "passed_one" | "passed_both" | "to_president" | "law" | "vetoed" | "failed"
Furthest stage reached, from the Library of Congress action codes.
countinteger
lawsByAreaobject[]
3 fields
areastring
lawsinteger
billsinteger

CongressSearchResults

Members by name and bills by number or words.
versionstring
membersobject[]
8 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
slugstring
currentboolean

InfluenceMatch

An organization in the lobbying or FEC records, matched to a contract recipient by an AI name judgment (inferred, not reported).
organizationIdinteger
Organization in the lobbying or FEC records.
namestring
recipientobject
The contract recipient it was matched to.
2 fields
idstring
namestring
relation"same_organization" | "same_family"
probabilitynumber
AI link probability (0–1), at or above ai.threshold.
lobbiesboolean
sponsorsPacboolean

InfluenceAi

Provenance of the AI name matches.
questionSetstring
modelsstring[]
thresholdnumber
Smallest link probability shown.
evaluatedAtstring | null

LobbyingSummary

Lobbying reported by or for the matched organizations (LD-2, LD-203).
yearsobject[]
4 fields
yearinteger
spendnumber
US dollars.
filingsnumber
quartersinteger[]
totalnumber
Reported lobbying spend: per quarter, the organizations' own in-house expenses (which include fees paid to outside firms) when they filed, else what outside firms reported receiving; no dollar counted twice.
inHousenumber
Expenses the organizations reported lobbying for themselves.
issuesobject[]
3 fields
codestring
labelstring
filingsnumber
agenciesobject[]
Chambers and agencies lobbied.
3 fields
labelstring
agencyIdinteger | null
Contracts agency id, when mapped.
filingsnumber
firmsobject[]
3 fields
namestring | null
Registrant; null for a registrant who is an individual (never named).
incomenumber
US dollars.
filingsnumber
firmCountnumber
contributionsobject[]
LD-203 contributions the organizations reported as registrants.
3 fields
yearinteger
federalCandidatesnumber
US dollars.
othernumber
US dollars.
latestPeriodobject | null
2 fields
yearinteger
quarterinteger

PacSummary

Political action committees the matched organizations sponsor (FEC).
committeesobject[]
7 fields
idstring
FEC committee id.
namestring
cycleinteger
typestring
receiptsnumber | null
disbursementsnumber | null
coverageEndstring | null
cyclesobject[]
6 fields
cycleinteger
toCandidatesnumber
US dollars.
byPartyobject[]
2 fields
party"DEM" | "REP" | "OTHER"
amountnumber
US dollars.
byOfficeobject[]
2 fields
office"H" | "S" | "P"
House, Senate or President.
amountnumber
US dollars.
independentSupportnumber
US dollars.
independentOpposenumber
US dollars.
topRecipientsobject[]
Largest recipients in topCycle.
6 fields
committeeNamestring
The candidate's principal campaign committee (or the committee paid), never a person's name.
party"DEM" | "REP" | "OTHER"
office"H" | "S" | "P" | null
statestring | null
districtstring | null
amountnumber
US dollars.
topCycleinteger | null

InfluenceRecipient

Lobbying and PAC activity of the organizations matched to a recipient's company family (every loaded year and cycle).
lobbyingSourceSourceInfo
fecSourceSourceInfo
lobbyingYearsinteger[]
Calendar years of lobbying reports loaded, oldest first.
fecCyclesinteger[]
FEC two-year cycles loaded, newest first.
recipientIdstring
familyobject | null
The company family whose organizations are shown (a lone recipient is its own family).
3 fields
idstring
namestring
membersnumber
lobbyingLobbyingSummary | null
pacsPacSummary | null

InfluenceAgency

Organizations whose lobbying reports list an agency, with their matched contract obligations from it.
lobbyingSourceSourceInfo
fecSourceSourceInfo
lobbyingYearsinteger[]
Calendar years of lobbying reports loaded, oldest first.
fecCyclesinteger[]
FEC two-year cycles loaded, newest first.
agencyIdinteger
level"toptier" | "subtier"
yearinteger
Calendar year of the lobbying reports.
fiscalYearinteger
Fiscal year of the contract figures.
totalsobject
3 fields
clientsnumber
filingsnumber
spendnumber
US dollars.
clientsobject[]
6 fields
organizationIdinteger
namestring
spendnumber
US dollars.
filingsnumber
issuesstring[]
matchobject | null
The contract recipient it was matched to (AI), when any.
6 fields
recipientobject
2 fields
idstring
namestring
probabilitynumber
relation"same_organization" | "same_family"
obligationsnumber
The matched family's contract obligations in the fiscal year.
fromAgencynumber
US dollars.
sharenumber | null
Share of the family's obligations that came from this agency; null without obligations.
unnamedobject
Clients whose name is not shown (it may be a person's): counted, not named.
2 fields
clientsnumber
spendnumber
US dollars.

InfluenceRecipientCongress

Congress beside a recipient's lobbying and PACs: members whose campaigns received contributions from the matched organizations' PACs, and bills their lobbying reports named. Comparisons, not causes.
versionstring
recipientIdstring
matchesInfluenceMatch[]
The organizations counted: AI matches to the recipient's company family.
cyclesobject[]
The latest two FEC cycles loaded, newest first.
5 fields
cycleinteger
FEC two-year cycle.
toCandidatesnumber
Direct and in-kind contributions (24K, 24Z) from the organizations' PACs to federal candidates, memo entries and superseded transactions excluded.
toMembersnumber
The part members of Congress (117th Congress onward) received.
memberCountinteger
Members who received any.
membersobject[]
The ten members who received the most.
3 fields
memberCongressMemberRef
Current or latest seat.
amountnumber
US dollars.
committeesinteger
PACs that gave.
billsobject
4 fields
reportsinteger
Current lobbying reports of the organizations.
reportsNamingBillsinteger
Of those, reports whose issue descriptions name at least one bill.
yearsinteger[]
topobject[]
The ten bills named in the most reports (loaded measures only).
4 fields
reportsinteger
Current reports naming it.
firstYearinteger
lastYearinteger

CongressDistrictMoney

Federal contract obligations attributed to a district by place of performance, weighted by the district's share of each ZIP code and county: an estimate.
planstring
fiscalYearsinteger[]
fiscalYearinteger
The fiscal year agencies, recipients, categories and rank describe: the latest that has ended.
byYearobject[]
6 fields
fiscalYearinteger
obligationsnumber
US dollars.
actionsinteger
newAwardsinteger
notCompetednumber
US dollars.
smallBusinessnumber
US dollars.
agenciesobject[]
4 fields
subtierIdinteger
namestring
toptierNamestring | null
obligationsnumber
US dollars.
recipientsobject[]
4 fields
recipientIdstring
namestring
obligationsnumber
US dollars.
awardsinteger
categoriesobject[]
2 fields
categorystring
Spending category id.
obligationsnumber
US dollars.
rankobject | null
Position among the state's districts by obligations.
3 fields
positioninteger
ofinteger
fiscalYearinteger
perResidentnumber | null

CongressDistrict

A congressional district of one plan: residents, counties, members, senators and contract money.
versionstring
planstring
idstring
labelstring
statestring
stateNamestring
numberinteger
0 at large.
populationnumber | null
landAreaSqKmnumber | null
centroidobject | null
2 fields
latnumber
lngnumber
countiesobject[]
4 fields
geoidstring
namestring
districtSharenumber
Share (0–1) of the district's residents in the county.
countySharenumber
Share (0–1) of the county's residents in the district.
membersobject[]
Members who held the seat in the plan's Congresses, newest first.
9 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
fromstring
YYYY-MM-DD.
tostring
YYYY-MM-DD.
currentboolean
plansstring[]
Plans this district id exists in (boundaries change between plans).

CongressDistrictMoneyMap

Contract obligations attributed to every district of a plan in one fiscal year (an estimate, by ZIP code and county shares).
versionstring
planstring
fiscalYearinteger
districtsobject[]
3 fields
idstring
obligationsnumber
US dollars.
perResidentnumber | null

CongressContractorPac

A PAC whose sponsor is matched to a federal contract recipient, and what it gave the member.
committeeIdstring
FEC committee id.
committeeNamestring
sponsorobject
The organization connected to (sponsoring) the PAC.
2 fields
idinteger
namestring
amountnumber
Contributions this PAC gave the member's campaigns in the cycle.
matchobject
The contract recipient the sponsor was matched to by an AI name judgment: inferred, not reported; show it with its probability.
4 fields
recipientIdstring
recipientNamestring
relation"same_organization" | "same_family"
probabilitynumber
AI link probability (0–1), at or above ai.threshold.
obligationsnumber | null
That recipient's contract obligations in the payload's fiscalYear (deobligations can make it negative); null when none are recorded.

CongressMemberMoney

Contributions a member's campaigns received from political committees per FEC cycle, the part from PACs of matched contract recipients, and the FEC summaries of the member's candidacies. USD as filed.
versionstring
idstring
Bioguide id.
namestring
candidateIdsstring[]
The member's FEC candidate ids (congress-legislators crosswalk).
fiscalYearinteger | null
Fiscal year of the recipients' contract obligations: the latest closed fiscal year loaded.
cyclesobject[]
Every FEC cycle loaded, newest first (zeros when the campaigns received nothing in it).
4 fields
cycleinteger
FEC two-year cycle, named by its even year.
fromCommitteesobject
Direct and in-kind contributions received from committees (24K, 24Z; memo entries and amended-away transactions excluded), by the giving committee's FEC type.
6 fields
totalnumber
US dollars.
pacsnumber
US dollars.
partiesnumber
US dollars.
campaignsnumber
US dollars.
othernumber
US dollars.
committeesinteger
Giving committees whose net amount is positive.
contractorPacsobject
The part received from PACs whose sponsor is matched (AI) to a contract recipient.
3 fields
amountnumber
US dollars.
committeesinteger
topCongressContractorPac[]
The largest ten.
candidaciesobject[]
The member's FEC candidacies in the cycle (a member may hold several ids: House, then Senate).
7 fields
candidateIdstring
namestring | null
As filed with the FEC ("DOE, JANE A.").
officestring
H, S or P.
statestring | null
districtstring | null
partystring | null
moneyobject | null
FEC all-candidates summary, cumulative through coverageEnd; null when the FEC lists none for the cycle.
10 fields
receiptsnumber
US dollars.
disbursementsnumber
US dollars.
cashOnHandnumber
US dollars.
debtsnumber
US dollars.
individualContributionsnumber
An FEC aggregate; no contributor is stored.
pacContributionsnumber
Received from other political committees (PACs).
partyContributionsnumber
US dollars.
candidateContributionsnumber
US dollars.
candidateLoansnumber
US dollars.
coverageEndstring | null

ContractsMeta

Loaded fiscal years, agency filter options and data freshness.
versionstring
Current contracts data version: pin it with v.
fiscalYearsobject[]
Newest first.
3 fields
yearinteger
monthsinteger
Months loaded (a year in progress has fewer than 12).
obligationsnumber
US dollars.
firstFiscalYearinteger | null
First fiscal year with complete history.
defaultFiscalYearinteger | null
dataThroughstring | null
Latest action date loaded (YYYY-MM-DD).
agenciesobject[]
Toptier agencies with spending, largest first: the agency filter values.
4 fields
idinteger
codestring
namestring
obligationsnumber
US dollars.
opportunitiesSourceInfo | null

ContractsMap

One value per county or state.
versionstring
level"county" | "state"
metric"obligations" | "per_capita" | "actions" | "low_competition_share" | "not_competed_share" | "single_offer_share" | "small_business_share"
geoidsstring[]
Places with a value, aligned with values.
valuesnumber[]
unmappedobject
Obligations performed abroad or at no known place (in the national total, not on the map).
2 fields
abroadnumber
US dollars.
unknownnumber
US dollars.
statsobject
5 fields
minnumber
p10number
p50number
p90number
maxnumber

ContractsKpis

obligationsnumber
US dollars.
actionsnumber
newAwardsnumber
perCapitanumber | null
Per resident (Census estimates).
notCompetedSharenumber | null
singleOfferSharenumber | null
smallBusinessSharenumber | null

ContractsRankedEntity

kind"agency" | "recipient"
idstring
namestring
obligationsnumber
US dollars.
awardsnumber | null
sharenumber
Percent (0–100).

AwardRow

A prime contract award (all its actions summed).
idstring
Analisa award id (use with /api/v1/contracts/awards/{id}).
piidstring
Contract number (PIID).
descriptionstring | null
awardTypestring
FPDS award type code.
agencyobject | null
Awarding subtier agency.
2 fields
idinteger
namestring
recipientobject | null
2 fields
idstring
namestring
placestring | null
Place of performance name.
placeGeoidstring | null
County GEOID, or state FIPS when the county is unknown.
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
competition"competed" | "not-competed" | "unknown"
offersReceivednumber | null
totalObligatednumber
US dollars.
potentialValuenumber | null
Base and all options.
firstActionDatestring
lastActionDatestring

ContractsPlaceSummary

Where a place's contract money goes.
versionstring
geoidstring
namestring
previousContractsKpis | null
The previous fiscal year, for comparison.
monthlyobject[]
3 fields
monthstring
YYYY-MM
obligationsnumber
US dollars.
actionsnumber
yearlyobject[]
2 fields
yearinteger
obligationsnumber
US dollars.
categoriesobject[]
3 fields
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
obligationsnumber
US dollars.
sharenumber
Percent (0–100).
topRecipientsContractsRankedEntity[]
largestAwardsAwardRow[]
A city's are the awards whose ZIP code lies mostly in it (attribution.largestAwardsMinShare).
topIndustriesobject[] | null
Largest industry groups of the fiscal year; null when a category or agency filter is set (the NAICS read models have neither).
5 fields
naicsstring
Four-digit NAICS industry group.
namestring
obligationsnumber
US dollars.
awardsnumber
Awards with an action in the year, counted once per county (or city).
sharenumber
Percent (0–100).
attributionobjectoptional
Cities only: how their money was attributed.
4 fields
method"zip-land-share"
Each action's county money split by the share of its award's ZIP code land inside the city.
crosswalkVintagestring | null
Census vintage of the ZIP crosswalk (ZCTA relationship files).
countiesobject[]
The counties the city lies in and their obligations under the same filters: the city's money is part of these, never added to them.
3 fields
geoidstring
namestring
obligationsnumber
US dollars.
largestAwardsMinSharenumber
Minimum share of a ZIP code's land in the county that lies in the city for its awards to be listed.
partialtrueoptional
Present when an optional part timed out and is empty: the response is sent with no-store and no ETag; retry later for the full payload.

ContractsSearchResults

querystring
agenciesobject[]
5 fields
idinteger
level"toptier" | "subtier" | "office"
codestring
namestring
parentstring | null
recipientsobject[]
5 fields
idstring
namestring
ueistring | null
locationstring | null
obligationsnumber
US dollars.
awardsobject[]
5 fields
idstring
piidstring
descriptionstring | null
recipientstring | null
totalObligatednumber
US dollars.
opportunitiesobject[]
6 fields
idstring
titlestring
noticeTypestring
agencystring | null
postedAtstring
responseDeadlinestring | null
grantRecipientsobject[]
Organizations with grants or other assistance and no contracts, all loaded years.
6 fields
idstring
Assistance profile id, "g<id>".
namestring
ueistring | null
locationstring | null
obligationsnumber
US dollars.
faceValuenumber
Loans: face value (never part of obligations).
programsobject[]
Assistance Listings by number or title, all loaded years.
6 fields
idinteger
numberstring
Assistance Listing number, e.g. "10.557".
titlestring
agencystring | null
obligationsnumber
US dollars.
faceValuenumber
US dollars.
partialtrueoptional
Present when an optional part timed out and is empty: the response is sent with no-store and no ETag; retry later for the full payload.

AwardPage

25 awards; keyset pagination.
rowsAwardRow[]
nextCursorstring | null
Pass back as cursor for the next page; null on the last page.

RecipientRow

idstring
namestring
ueistring | null
SAM Unique Entity ID.
locationstring | null
businessSizestring | null
obligationsnumber
US dollars.
awardsnumber
agenciesnumber
notCompetedSharenumber | null

RecipientPage

25 recipients; nextCursor is an offset (up to 10,000).
nextCursorstring | null
Pass back as cursor for the next page; null on the last page.

AgencyRow

idinteger
namestring
parentstring | null
obligationsnumber
US dollars.
actionsnumber
newAwardsnumber
notCompetedSharenumber | null
smallBusinessSharenumber | null

AgencyPage

Subtier agencies ranked by obligations (up to 300; one page).
rowsAgencyRow[]
nextCursorstring | null
Pass back as cursor for the next page; null on the last page.

OpportunityRow

idstring
SAM.gov notice id.
titlestring
solicitationNumberstring | null
noticeTypestring
agencystring | null
officestring | null
setAsidestring | null
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
placestring | null
postedAtstring
responseDeadlinestring | null
activeboolean
awardAmountnumber | null
awardeestring | null

OpportunityPage

25 notices; keyset pagination.
nextCursorstring | null
Pass back as cursor for the next page; null on the last page.

AwardDetail

An award with every action, its agencies, recipient and related notices (the main fields; more are included).
awardobject
27 fields
idstring
Analisa award id (use with /api/v1/contracts/awards/{id}).
piidstring
Contract number (PIID).
descriptionstring | null
awardTypestring
FPDS award type code.
agencyobject | null
Awarding subtier agency.
2 fields
idinteger
namestring
recipientobject | null
2 fields
idstring
namestring
placestring | null
Place of performance name.
placeGeoidstring | null
County GEOID, or state FIPS when the county is unknown.
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
competition"competed" | "not-competed" | "unknown"
offersReceivednumber | null
totalObligatednumber
US dollars.
potentialValuenumber | null
Base and all options.
firstActionDatestring
lastActionDatestring
awardKeystring
USAspending unique award key.
naicsCodestring | null
pscCodestring | null
extentCompetedstring | null
setAsidestring | null
pricingTypestring | null
justificationCodestring | null
ceilingGrowthnumber | null
defaultTerminationboolean
officeobject | null
2 fields
idinteger
namestring
toptierobject | null
2 fields
idinteger
namestring
permalinkstring
The award on USAspending.gov.
transactionsobject[]
6 fields
modificationNumberstring
actionDatestring
actionTypestring | null
obligationnumber
US dollars.
descriptionstring | null
deletedboolean
opportunitiesOpportunityRow[]
SAM.gov notices of the award's solicitation.
judgmentobject | nulloptional
AI reading of the award's description (inferred, never reported data).
4 fields
questionSetstring
modelstring
evaluatedAtstring
flags("low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18))[]

RecipientProfile

A recipient's history, agencies, what it sells and where (organizations only).
recipientobject
6 fields
idstring
namestring
ueistring | null
locationstring | null
businessSizestring | null
flagsstring[]
yearlyobject[]
3 fields
yearinteger
obligationsnumber
US dollars.
awardsnumber
kpisobject
4 fields
obligationsnumber
US dollars.
awardsnumber
notCompetedSharenumber | null
singleOfferSharenumber | null
categoriesobject[]
3 fields
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
obligationsnumber
US dollars.
sharenumber
Percent (0–100).
placesobject[]
4 fields
geoidstring
namestring
obligationsnumber
US dollars.
sharenumber
Percent (0–100).
largestAwardsAwardRow[]
integrityobject
3 fields
measuresobject[]
4 fields
id"low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18)
valuenumber | null
nationalnumber | null
obligationsnumber
US dollars.
soleSourceobject[]
4 fields
idstring
namestring
valuenumber
obligationsnumber
US dollars.
defaultTerminationsnumber | null
fiscalYearinteger
familyobject | nulloptional
Company family (reported parents and AI name matches).
3 fields
idstring
namestring
memberCountnumber
partialtrueoptional
Present when an optional part timed out and is empty: the response is sent with no-store and no ETag; retry later for the full payload.

AgencyProfile

A toptier agency, subtier agency or contracting office.
agencyobject
5 fields
idinteger
level"toptier" | "subtier" | "office"
codestring
namestring
parentobject | null
2 fields
idinteger
namestring
yearlyobject[]
2 fields
yearinteger
obligationsnumber
US dollars.
childrenobject[]
3 fields
idinteger
namestring
obligationsnumber
US dollars.
topRecipientsContractsRankedEntity[]
categoriesobject[]
3 fields
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
obligationsnumber
US dollars.
sharenumber
Percent (0–100).
placesobject[]
4 fields
geoidstring
namestring
obligationsnumber
US dollars.
sharenumber
Percent (0–100).
largestAwardsAwardRow[]
integrityobject
3 fields
measuresobject[]
4 fields
id"low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18)
valuenumber | null
nationalnumber | null
obligationsnumber
US dollars.
soleSourceobject[]
4 fields
idstring
namestring
valuenumber
obligationsnumber
US dollars.
defaultTerminationsnumber | null
fiscalYearinteger

OpportunityDetail

A SAM.gov notice with its description and the awards that match its solicitation.

ContractsGraph

The buyer ↔ recipient network.
versionstring
focusobject | null
3 fields
kind"agency" | "recipient"
idstring
namestring
nodesobject[]
6 fields
idstring
"a<agency id>" or "r<recipient id>".
kind"agency" | "recipient"
entityIdstring
labelstring
obligationsnumber
US dollars.
degreenumber
edgesobject[]
6 fields
sourcestring
targetstring
obligationsnumber
US dollars.
awardsnumber
notCompetedSharenumber | null
singleOfferSharenumber | null
totalObligationsnumber
Every relationship matching the filters, not only those drawn.
truncatedboolean

ContractsRelationship

One agency–recipient relationship and its awards.
agencyobject
2 fields
idinteger
namestring
recipientobject
2 fields
idstring
namestring
fiscalYearinteger
yearlyobject[]
3 fields
yearinteger
obligationsnumber
US dollars.
awardsnumber
kpisobject
4 fields
obligationsnumber
US dollars.
awardsnumber
notCompetedSharenumber | null
singleOfferSharenumber | null
awardsAwardRow[]

ContractsSignals

Integrity signals of a scope: reasons to look closer, never evidence of wrongdoing.
versionstring
geoidstring
namestring
obligationsnumber
US dollars.
signalsobject[]
8 fields
id"low-competition" | "not-competed" | "single-offer" | "urgency" | "year-end" | "ceiling-growth" | "undefinitized" | "time-materials" | … (18)
valuenumber | null
Share 0–100, count, ratio or dollars (as the catalog unit says); null when not measurable.
nationalnumber | null
obligationsnumber | null
awardsnumber | null
leadersobject[]
6 fields
kind"agency" | "office" | "recipient" | "relationship" | "award"
idstring
namestring
detailstring | null
valuenumber
obligationsnumber
US dollars.
notestring | null
coveragenumber | nulloptional
AI signals: share of obligations on awards that were read.
justificationsobject[]
5 fields
codestring
labelstring
obligationsnumber
US dollars.
awardsnumber
sharenumber
Percent (0–100).

ContractsRanking

The top 50 by spending or an integrity measure.
versionstring
kind"agencies" | "offices" | "recipients" | "relationships"
metricstring
order"desc" | "asc"
minimumObligationsnumber
Smallest obligations for a row to be ranked on a share.
rowsobject[]
6 fields
idstring
Agency or office id, recipient id, or "subtier:recipient".
namestring
detailstring | null
valuenumber
obligationsnumber
US dollars.
pairobjectoptional
4 fields
agencyIdstring
agencyNamestring
recipientIdstring
recipientNamestring

ContractsFlows

Money flows for a Sankey chart: the 6 largest sources and 8 largest targets.
versionstring
mode"agency-recipient" | "category-recipient" | "agency-category"
geoidstring
nodesobject[]
6 fields
idstring
side"source" | "target"
kind"agency" | "recipient" | "category" | "other"
entityIdstring | null
labelstring
obligationsnumber
US dollars.
linksobject[]
3 fields
sourcestring
targetstring
obligationsnumber
US dollars.
totalnumber
All obligations in scope (the rest is grouped as Other).

Category

id"safety" | "economy" | "housing" | "health" | "healthcare" | "environment" | "education" | "infrastructure" | … (12)
labelstring
descriptionstring
iconstring
Lucide icon name.
weightnumber
Default weight in the overall score (0 = context only, not scored).

Indicator

keystring
Stable snake_case id, used in URLs; never renamed.
category"safety" | "economy" | "housing" | "health" | "healthcare" | "environment" | "education" | "infrastructure" | … (12)
labelstring
shortLabelstring
descriptionstring
What is measured and for whom, in plain language.
unit"percent" | "usd" | "years" | "minutes" | "miles" | "per_100k" | "per_1k" | "per_10k" | … (17)
direction"higher" | "lower" | "neutral"
Which way is better; neutral indicators are context and are not scored.
source"census-geo" | "census-acs5" | "census-pep" | "chr" | "bls-laus" | "epa-aqi" | "fema-nri" | "noaa-climdiv" | … (58)
Id of the source in sources.
sourceFieldstring
Publisher field(s) the value comes from.
weightnumber
Default weight inside its category (0 = shown, not scored).
decimalsinteger
Decimal places for display.
shrinkbooleanoptional
Ranked on estimates shrunk toward the state mean using the published standard error.
rollup"sum" | "population" | "households" | "land_area" | "none"
How county values combine into a metro area or a state when the publisher releases no figure for it: a sum, a mean weighted by residents, households or land area, or not at all (medians, indexes and ratios do not average). Such values carry the aggregated flag.
areaWidebooleanoptional
The measure describes the wider area (climate, air, hazards, crime reported by county agencies, provider supply): a city without its own figure shows its county's value, flagged borrowed. Measures of the residents themselves are never borrowed.
levelSourcesRecord<string, object>optional
Publishers of the same measure at levels the main source does not release (for example CDC PLACES city estimates of a county measure). One source per level: a value is never a blend.

Source

id"census-geo" | "census-acs5" | "census-pep" | "chr" | "bls-laus" | "epa-aqi" | "fema-nri" | "noaa-climdiv" | … (58)
namestring
publisherstring
homepagestring
licensestring
License or terms of the data.
attributionstring
Credit line to show with values from this source.

Profile

id"explorer" | "family" | "remote" | "retiree" | "young-professional"
labelstring
descriptionstring
categoryWeightsRecord<string, number>
Multipliers of the default category weights (missing = 1).
indicatorWeightsRecord<string, number>
Overrides of default indicator weights.
highlightsstring[]
Indicators surfaced first; scores do not change.

Release

The latest release of a source that changed the data.
idstring
Source id.
vintagestring
Publisher release loaded.
loadedAtstring
When a load last changed the data (ISO timestamp).

Meta

The catalog: what is measured, from where, and the loaded releases.
versionstring
Current dataset version: pin it with v.
datasetsobject
Versioned URLs of the two datasets.
2 fields
countystring
statestring
releasesRelease[]
categoriesCategory[]
indicatorsIndicator[]
sourcesSource[]
profilesProfile[]

PlaceDetail

One place with the full published history of every indicator.
geoidstring
level"NATION" | "STATE" | "METRO" | "COUNTY" | "CITY"
namestring
shortNamestring
stateCodestring | null
Two-letter state code.
parentGeoidstring | null
landAreaSqKmnumber | null
centroid[number, number] | null
[lat, lng].
seriesRecord<string, object[]>
Every published value per indicator key, oldest period first.

PlaceSearchResponse

Places matching a name.
querystring
The place name searched for, normalized (lower case, accents folded, apostrophes dropped, words only), without the state.
statestring | null
Two-letter code of the state the query named, to which the results are limited; null when the query named none (or the named state left no result and was part of the name).
resultsobject[]
Best match first: exact name, then name prefix, then word prefix, the larger place first within a tier; similar spellings are tried only when nothing matches.
8 fields
geoidstring
The place's GEOID (state 2 digits, metro area M + 5 digits, county 5 digits, city 7 digits).
level"state" | "metro" | "county" | "city"
kindstring | null
Metro areas: "metro" or "micro". Cities: the Census type ("city", "town", "CDP"…). Null for states and counties.
labelstring
The name to show: "Texas", "Travis County, TX", "Austin-Round Rock-San Marcos, TX metro", "Austin, TX".
namestring
The place's name alone.
stateCodestring | null
Two-letter state code (a metro area's principal state).
populationnumber | null
Latest population, when the place has one.
hrefstring
Path of the place's page on this site.

DatasetJson

The map dataset as JSON (?format=json): the same columns as the binary format.
level"county" | "state" | "metro" | "city"
Geographic level: state (2-digit FIPS GEOIDs, "48"), metro (metropolitan and micropolitan areas: M + the 5-digit CBSA code, "M12420"), county (5-digit GEOIDs, "48453") or city (Census places with at least 1,000 residents: cities, towns, villages and census-designated places, 7-digit GEOIDs, "4805000").
versionstring
generatedAtstring
placesobject
Columns: index i of every array is place i.
5 fields
geoidstring[]
namestring[]
stateCodestring[]
lat(number | null)[]
lng(number | null)[]
indicatorsobject[]
7 fields
keystring
periodsstring[]
Distinct periods present, most recent first.
nationalnumber | null
Value for the whole nation.
values(number | null)[]
Latest value per place (null = none).
scores(number | null)[]
Percentile score 0–100 per place (higher is better).
periodIndexinteger[]
Per place: index into periods of its value.
flagsinteger[]
Per place: bit set of data-quality flags (1 unreliable, 2 crosswalked, 4 aggregated, 8 partialYear, 16 modelBased, 32 olderPeriod, 64 provisional, 128 partialCoverage, 256 borrowed, 512 crude, 1024 topCoded, 2048 bottomCoded). aggregated: a metro area's or state's value rolled up from its counties, because the publisher releases no figure for it. borrowed: a city's value that is really its county's (an area-wide measure without a city figure: see areaWide in /api/v1/meta): show it as the county's.
sourcesRelease[]
shardsRecord<string, string>optional
City dataset only: content hash of each state's city shapes, by state FIPS. Request /api/v1/geo/shards/cities/{state}?h={hash}.

MigrationPayload

One migration metric for one hub (the nation or a state): every period and counterpart country.
versionstring
generatedAtstring
metricobject
8 fields
keystring
direction"immigration" | "emigration"
kind"stock" | "flow" | "money"
labelstring
shortLabelstring
descriptionstring
unit"people" | "usd"
sourceFieldstring
hubobject
4 fields
geoidstring
namestring
latnumber
lngnumber
periodsstring[]
Oldest first.
countriesobject[]
6 fields
iso3string
iso2string | null
namestring
region"latin-america" | "asia" | "europe" | "africa" | "northern-america" | "oceania"
latnumber
lngnumber
values((number | null)[] | null)[]
values[p][c]: period p, country c (null = not published; a null row = only a total was published).
standardErrors((number | null)[] | null)[] | null
flags(Record<string, string[]>)[]
Per period: flags by country index, only where set.
totals(number | null)[]
The publisher's all-countries total per period.
totalFlagsRecord<string, string[]>
sourceobject
7 fields
idstring
namestring
publisherstring
attributionstring
homepagestring
vintagestring | null
loadedAtstring | null

MigrationContext

National series that frame the migrations map.
versionstring
seriesobject[]
7 fields
keystring
directions("immigration" | "emigration")[]
labelstring
descriptionstring
unit"people" | "per_1k" | "percent" | "usd"
sourcestring
pointsobject[]
2 fields
periodstring
valuenumber

Health

Liveness: the process answers (the database is not touched).
status"ok"

Ready

Readiness: the database answered a trivial query within 1 s (503 otherwise).
status"ready" | "unavailable"
database"ok" | "unreachable"
msnumberoptional
Ping time.

OpenApiDocument

This document.
openapistring
infoobject
0 fields
pathsobject
0 fields

PlaceBreakdowns

The distributions behind a place's headline numbers, for the latest ACS 5-year window and the one before it.
versionstring
geoidstring
namestring
level"nation" | "state" | "metro" | "county" | "city"
sourceobject
Provenance: cite the publisher and the vintage with the data.
7 fields
namestring
Dataset name.
publisherstring
Agency that publishes it.
attributionstring
Credit line to show with the data.
homepagestring
Where to find the original.
vintagestring | null
Release or date the data is current to (YYYY-MM-DD for contracts).
loadedAtstring | null
When Analisa last loaded a release that changed the data (ISO timestamp).
idstring
breakdownsobject[]
Empty for a place the ACS does not tabulate.
11 fields
keystring
Breakdown key, stable (household_income, age_sex, race_ethnicity, tenure, gross_rent, home_value, commute_mode, travel_time, education, year_built, bedrooms).
labelstring
descriptionstring
unit"people" | "households" | "housing_units" | "workers"
shape"bars" | "pyramid"
pyramid: buckets come in male/female pairs.
tablestring
ACS detail table, e.g. "B19001".
explainsstring[]
Indicator keys whose value this distribution sits behind.
latestobject
5 fields
periodstring
ACS 5-year window, e.g. "2020-2024".
endYearinteger
Last year of the window: the vintage of the data.census.gov table.
totalnumber
Universe of the table (households, residents, workers…), as published.
totalMoenumber | null
bucketsobject[]
8 fields
keystring
Bucket key, stable. The age and sex pyramid's keys are <age group>:male and <age group>:female.
labelstring
valuenumber | null
Estimated count (people, households, homes or workers). Null where the Census Bureau does not publish a cell of the bucket.
moenumber | null
90% margin of error of the count (the root sum of squares of the cells' margins). Null for a controlled estimate.
sharenumber | null
shareMoenumber | null
90% margin of error of the share (the Census Bureau's formula for derived proportions), 0–1.
lowReliabilityboolean
The margin of error is more than 30% of the estimate (a coefficient of variation above about 18%): show with care. Never true for a zero or missing estimate.
changeobject | null
Against the previous window; only on the latest window, and only where both windows have a share.
2 fields
pointsnumber
Change in the bucket's share since the previous window, in percentage points.
significantboolean
The change is larger than the combined margin of error of the two shares (the two 5-year windows do not overlap).
previousobject | null
The window before the latest (about five years earlier), when the place has one.
5 fields
periodstring
ACS 5-year window, e.g. "2020-2024".
endYearinteger
Last year of the window: the vintage of the data.census.gov table.
totalnumber
Universe of the table (households, residents, workers…), as published.
totalMoenumber | null
bucketsobject[]
8 fields
keystring
Bucket key, stable. The age and sex pyramid's keys are <age group>:male and <age group>:female.
labelstring
valuenumber | null
Estimated count (people, households, homes or workers). Null where the Census Bureau does not publish a cell of the bucket.
moenumber | null
90% margin of error of the count (the root sum of squares of the cells' margins). Null for a controlled estimate.
sharenumber | null
shareMoenumber | null
90% margin of error of the share (the Census Bureau's formula for derived proportions), 0–1.
lowReliabilityboolean
The margin of error is more than 30% of the estimate (a coefficient of variation above about 18%): show with care. Never true for a zero or missing estimate.
changeobject | null
Against the previous window; only on the latest window, and only where both windows have a share.
2 fields
pointsnumber
Change in the bucket's share since the previous window, in percentage points.
significantboolean
The change is larger than the combined margin of error of the two shares (the two 5-year windows do not overlap).
compareobject[]
The same distribution for larger areas, nearest first: the state of a county or city, then the nation. Metro areas compare with the nation only.
3 fields
geoidstring
namestring
shares(number | null)[]
Shares in the order of the breakdown's buckets, for the latest window.
censusUrlstring | null
The table's page on data.census.gov for this place and the latest window.

OccupationSearch

Occupations matching a search, best first.
versionstring
querystring
resultsobject[]
4 fields
codestring
SOC 2018 code: "15-1252" (detailed occupation) or "15-0000" (major group).
titlestring
group"total" | "major" | "detailed"
usEmploymentnumber | null
People employed in the occupation nationally (the ranking tie-break).

PlaceWages

Employment and annual pay by occupation in a place's area, with the principal state's and the nation's.
versionstring
areaobject
The area BLS publishes for the place asked about.
3 fields
geoidstring
namestring
level"nation" | "state" | "metro"
requestedobject | null
The place asked about, when it is not the area itself (a county or city answers with its metro area).
2 fields
geoidstring
namestring
stateobject | null
A metro area's principal state, the state comparison of each row.
2 fields
geoidstring
namestring
sourceobject
6 fields
idstring
namestring
publisherstring
homepagestring
attributionstring
periodstring
Survey reference month, e.g. "2025-05".
mode"top" | "occupation"
rowsobject[]
4 fields
occupationobject
3 fields
codestring
SOC 2018 code: "15-1252" (detailed occupation) or "15-0000" (major group).
titlestring
group"total" | "major" | "detailed"
areaobject | null
Null when BLS publishes nothing for the occupation in the area.
9 fields
employmentnumber | null
People employed. Null where BLS suppresses it.
locationQuotientnumber | null
The occupation's share of the area's jobs relative to its national share (1 = the national share). Null for the nation.
meannumber | null
Mean annual wage, US dollars.
mediannumber | null
Median annual wage, US dollars.
p10number | null
p25number | null
p75number | null
p90number | null
flags("wage-top-coded" | "employment-suppressed" | "annualized-from-hourly")[]
wage-top-coded: a wage is at or above BLS's published cap, so the figure is that cap (the real wage is at least that much). annualized-from-hourly: published by the hour only, times 2,080 hours.
stateobject | null
9 fields
employmentnumber | null
People employed. Null where BLS suppresses it.
locationQuotientnumber | null
The occupation's share of the area's jobs relative to its national share (1 = the national share). Null for the nation.
meannumber | null
Mean annual wage, US dollars.
mediannumber | null
Median annual wage, US dollars.
p10number | null
p25number | null
p75number | null
p90number | null
flags("wage-top-coded" | "employment-suppressed" | "annualized-from-hourly")[]
wage-top-coded: a wage is at or above BLS's published cap, so the figure is that cap (the real wage is at least that much). annualized-from-hourly: published by the hour only, times 2,080 hours.
nationobject | null
9 fields
employmentnumber | null
People employed. Null where BLS suppresses it.
locationQuotientnumber | null
The occupation's share of the area's jobs relative to its national share (1 = the national share). Null for the nation.
meannumber | null
Mean annual wage, US dollars.
mediannumber | null
Median annual wage, US dollars.
p10number | null
p25number | null
p75number | null
p90number | null
flags("wage-top-coded" | "employment-suppressed" | "annualized-from-hourly")[]
wage-top-coded: a wage is at or above BLS's published cap, so the figure is that cap (the real wage is at least that much). annualized-from-hourly: published by the hour only, times 2,080 hours.

ElectionCandidate

A candidate who filed with the FEC (not the ballot), with the money the campaign received.
idstring
FEC candidate id.
namestring
As filed, in title case.
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
partyNamestring
status"incumbent" | "challenger" | "open" | "unknown"
FEC incumbent/challenger/open-seat status.
memberCongressMemberRef | null
The member of Congress this candidate is, when they serve or served.
moneyobject | null
FEC all-candidates summary, cumulative through coverageEnd; null when the FEC lists none.
8 fields
receiptsnumber
US dollars.
individualContributionsnumber
US dollars.
pacContributionsnumber
US dollars.
partyContributionsnumber
US dollars.
selfFundingnumber
The candidate's own contributions and loans.
cashOnHandnumber
US dollars.
coverageEndstring | null
contractorPacsnumber
Received from PACs whose sponsor is matched (AI, at or above the influence match threshold) to a federal contract recipient.

ElectionRaceSummary

A House district or Senate seat of the cycle.
idstring
"ca-12", "ak-al" or "ca-senate".
cycleinteger
office"house" | "senate"
statestring
stateNamestring
districtinteger | null
House district number (0 at large); null for Senate races.
labelstring
incumbentCongressMemberRef | null
incumbentRunningboolean
The incumbent filed to run again for this seat this cycle.
incumbentRunsInstring | null
Race id the incumbent filed for instead (another district after a redraw, or the Senate), if any.
leadersElectionCandidate[]
Up to 3 candidates, most received first.
candidatesinteger
Candidates listed: those who received at least the FEC reporting threshold ($5,000), and incumbents.
receiptsnumber
US dollars.

ElectionsOverview

Every House district and Senate seat of the cycle with the candidates who filed with the FEC.
versionstring
cycleinteger
datestring
General election day (YYYY-MM-DD).
totalsobject
3 fields
candidatesinteger
receiptsnumber
US dollars.
contractorPacsnumber
US dollars.

ElectionRace

One race: candidates and the money they received, the sitting member's record, and federal money in the place.
idstring
"ca-12", "ak-al" or "ca-senate".
cycleinteger
office"house" | "senate"
statestring
stateNamestring
districtinteger | null
House district number (0 at large); null for Senate races.
labelstring
incumbentCongressMemberRef | null
incumbentRunningboolean
The incumbent filed to run again for this seat this cycle.
incumbentRunsInstring | null
Race id the incumbent filed for instead (another district after a redraw, or the Senate), if any.
leadersElectionCandidate[]
Up to 3 candidates, most received first.
candidatesinteger
Candidates listed: those who received at least the FEC reporting threshold ($5,000), and incumbents.
receiptsnumber
US dollars.
versionstring
datestring
allCandidatesElectionCandidate[]
Every listed candidate, most received first.
recordobject[]
The sitting member's recorded activity in the current Congress (both senators' for a Senate race).
4 fields
congressinteger
slugstring
moneyCongressDistrictMoney | null
Contract money attributed to the district (current plan); null for Senate races.
programsobject | null
Assistance to the district's counties weighted by the district's share of each county's residents (an estimate): the largest grant programs, and direct payments and insurance apart (their size follows who lives there). Null for Senate races.
3 fields
fiscalYearinteger
grantsobject[]
3 fields
numberstring
Assistance listing number.
titlestring
obligationsnumber
US dollars.
paymentsobject
2 fields
totalnumber
US dollars.
topobject[]
3 fields
numberstring
Assistance listing number.
titlestring
obligationsnumber
US dollars.
countiesobject[]
Counties of the district, largest share first.
3 fields
geoidstring
namestring
sharenumber
planstring | null

ElectionRecord

Contested final-passage roll calls in the chosen policy areas, with the members' recorded positions.
versionstring
congressinteger
districtstring
membersobject[]
The district's representative and its state's senators, seated today.
7 fields
idstring
Bioguide id.
namestring
party"D" | "R" | "I" | "L" | "O"
D Democrat, R Republican, I independent, L Libertarian, O other.
statestring
Postal code.
districtIdstring | null
District id ("CA-12", "AK-AL") for representatives; null for senators.
chamber"house" | "senate" | null
slugstring
areasstring[]
votesobject[]
Newest first.
9 fields
voteIdstring
chamber"house" | "senate"
datestring
questionstring
billobject
6 fields
idstring
labelstring
titlestring
summarystring | null
Excerpt of the CRS summary.
policyAreastring | null
stage"introduced" | "reported" | "passed_one" | "passed_both" | "to_president" | "law" | "vetoed" | "failed"
Furthest stage reached, from the Library of Congress action codes.
resultstring
passedboolean | null
partySidesRecord<string, "yea" | "nay" | null>
The majority side of each party's voting members.
positionsRecord<string, "yea" | "nay" | "present" | "not_voting" | "other">
The members' recorded positions by Bioguide id (absent: not in office or not recorded).

ElectionPlaceDistricts

The congressional districts of a county or city under the current plan.
versionstring
geoidstring
districtsobject[]
3 fields
idstring
labelstring
sharenumber
Share (0–1) of the place's residents in the district.

ElectionBallotArea

How mail and provisional ballots were handled in a place, per general election.
geoidstring
namestring
level"nation" | "state" | "county"
electionsobject[]
Elections with any reported value, oldest first.
3 fields
yearinteger
General election year.
mailobject
7 fields
transmittedinteger | null
returnedinteger | null
countedinteger | null
rejectedinteger | null
rejectionRatenumber | null
rejected ÷ (counted + rejected).
reasonsobject[]
Reasons reported, largest first.
4 fields
reason"late" | "missing_voter_signature" | "missing_witness_signature" | "signature_mismatch" | "missing_official_signature" | "unofficial_envelope" | "ballot_missing" | "no_secrecy_envelope" | … (18)
labelstring
countinteger
sharenumber
Share (0–1) of the rejected mail ballots.
reasonsCoveragenumber | null
Share of the rejections the reasons account for (offices do not always break every rejection down).
provisionalobject
4 fields
castinteger | null
countedinteger | null
Counted in full or in part.
rejectedinteger | null
countedSharenumber | null
counted ÷ cast.

ElectionBallots

Mail ballots counted and rejected (and why) and provisional ballots per general election (EAC EAVS), with the state and the nation for comparison. Counts are null where offices did not report them; source.vintage is the latest election loaded.
versionstring
stateElectionBallotArea | null
The county's state (null for a state or the nation).
nationElectionBallotArea | null
The nation (null when the place is the nation).

ExclusionMatch

How a recipient was matched to an exclusion record.
method"uei" | "cage" | "name"
uei or cage: exact identifier match (reported, counted). name: an AI name judgment (a possible match, never counted).
probabilitynumber | null
Name matches: probability (0–1) that both are the same organization or one corporate family; null for identifier matches.
modelstring | null
Name matches: the model that judged it.
evaluatedAtstring

ExclusionRecord

A SAM.gov exclusion record matched to a contract recipient.
idstring
classificationstring
SAM.gov classification ("Firm", "Special Entity Designation", "Vessel"); individuals and person-like firms are never loaded.
namestring
locationstring | null
ueistring | null
cagestring | null
agencyobject | null
The excluding agency.
2 fields
codestring
namestring
exclusionTypestring
typeLabelstring
Plain-language type.
programstring | null
activeDatestring | null
YYYY-MM-DD.
terminationDatestring | null
Null when indefinite.
creationDatestring | null
listedboolean
Still listed in the latest snapshot.
lastSeenAtstring | null
Last snapshot that listed it (null while listed).
endedAtstring | null
First snapshot that no longer listed it (the exclusion ended in between).
barsAwardsboolean
Whether this exclusion bars new contract awards (the rule of the integrity signal).
crossReferencesstring[]
Other organizations named in the record.
samUrlstring | null
The record on SAM.gov (current record numbers only).

ExclusionTotals

actionsnumber
awardsnumber
obligationsnumber
US dollars.

ExclusionAwardRow

A contract award with actions dated while its recipient was excluded.
idstring
Contract award id.
piidstring
descriptionstring | null
agencyobject | null
2 fields
idinteger
namestring
recipientobject | null
2 fields
idstring
namestring
firstActionDatestring
First counted action (new award, option or added work) during the exclusion, else the first action during it.
obligationsnumber
Obligations of the counted actions (of every action during the exclusion when none is counted).
actionsnumber
kindsstring[]
Counted action kinds: "new-award" and/or "new-work".
exclusionIdstring

ExclusionsContext

asOfstring | null
Data date of the latest snapshot applied.
historyFromstring | null
First snapshot applied (exclusions that ended before it are unknown).
nameThresholdnumber
Link probability at or above which a name match is shown as a possible match.

ExclusionsRecipient

A recipient's exclusions and its awards dated during one.
recipientIdstring
exclusionsExclusionRecord[]
Reported: exact identifier matches (UEI, CAGE).
possibleExclusionRecord[]
Possible matches: name matches judged likely by AI, never counted.
countedExclusionTotals
New awards, options and added work dated during an exclusion that bars awards.
continuationsExclusionTotals
Other modifications during an exclusion (context, not counted).

ExclusionsAward

An award's actions dated while its recipient was excluded.
awardIdstring
recipientIdstring | null
exclusionsExclusionRecord[]
possibleExclusionRecord[]
actionsobject[]
Actions of the award dated during an exclusion that bars awards, latest first.
7 fields
datestring
modificationNumberstring
actionTypestring | null
kind"new-award" | "new-work" | "continuation"
countedboolean
obligationnumber
US dollars.
exclusionIdstring

ExclusionsAgency

Awards an agency (toptier, subtier or office) made to excluded parties.
agencyIdinteger
fiscalYearinteger
yearobject
Counted actions of the fiscal year.
4 fields
actionsnumber
awardsnumber
obligationsnumber
US dollars.
recipientsnumber
allYearsobject
Counted actions of every loaded year.
4 fields
actionsnumber
awardsnumber
obligationsnumber
US dollars.
recipientsnumber
recipientsobject[]
5 fields
idstring
namestring
obligationsnumber
US dollars.
awardsnumber
exclusionobject | null
3 fields
agencystring | null
typeLabelstring
activeDatestring | null

TractArea

The counties behind an area's neighborhoods, with the content hash of each county's tract shapes.
areastring
The GEOID asked for.
level"county" | "city" | "metro"
versionstring
Neighborhoods version: pin /api/v1/datasets/tract and this route with ?v=.
countiesobject[]
Counties whose tracts make up the area's neighborhoods: a city's by share of residents (counties it only touches without residents are left out), a metro area's most populous first.
4 fields
geoidstring
County GEOID.
sharenumber | null
Share (0–1) of a city's residents living in the county; 1 for a county itself, null for metro areas.
populationnumber | null
County residents (latest estimate).
shardstring | null
Content hash of the county's tract shapes: request /api/v1/geo/shards/tracts/{county}?h={shard} (null when none are loaded).

TractDatasetJson

One county's neighborhoods as JSON (?format=json): the same columns as the binary format.
level"tract"
versionstring
generatedAtstring
placesobject
Columns: index i of every array is tract i.
6 fields
geoidstring[]
11-digit tract GEOIDs (county + 6-digit tract code).
namestring[]
Short names ("Tract 11.01").
stateCodestring[]
countystring[]
The county each tract nests in (where its borrowed values come from).
lat(number | null)[]
lng(number | null)[]
indicatorsobject[]
7 fields
keystring
periodsstring[]
Distinct periods present, most recent first.
nationalnumber | null
Value for the whole nation; null where tract values are a different measure (crude prevalence, ranks among tracts).
values(number | null)[]
Latest published value per tract (null = none).
scores(number | null)[]
Percentile score 0–100 among every ranked tract of the nation (higher is better; reliability-adjusted where the value has a standard error). Null for tracts under 500 residents.
periodIndexinteger[]
Per tract: index into periods of its value.
flagsinteger[]
Per tract: bit set of data-quality flags (1 unreliable, 2 crosswalked, 4 aggregated, 8 partialYear, 16 modelBased, 32 olderPeriod, 64 provisional, 128 partialCoverage, 256 borrowed, 512 crude, 1024 topCoded, 2048 bottomCoded). borrowed: the county's value of an area-wide measure without a tract figure.
sourcesRelease[]
shardsRecord<string, string>
Content hash of the county's tract shapes, by county GEOID.

TractEstimates

One census tract's published estimates with their margins of error.
geoidstring
versionstring
estimatesobject[]
The tract's own estimates (area-wide measures it borrows from its county are not listed).
6 fields
keystring
Indicator key (from /api/v1/meta).
valuenumber
Published value.
periodstring
standardErrornumber | null
Published standard error (null when the source publishes none).
marginOfErrornumber | null
90% margin of error: 1.645 × the standard error.
flagsstring[]
Data-quality notes: "unreliable" (coefficient of variation over 40%), "crude", "model-based", "top-coded", "bottom-coded".

OutcomeSourceInfo

Provenance of one source behind an outcomes payload.
idstring
namestring
publisherstring
attributionstring
homepagestring
vintagestring | null
loadedAtstring | null

OutcomeCaveat

A caveat to show with the results.
idstring
textstring

OutcomeDomainInfo

A group of federal money compared with outcomes.
id"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
labelstring
descriptionstring
measure"obligations" | "face-value"
face-value only for lending volume: not money spent, never added to totals.
shockFloorPerResidentnumber
Smallest increase per resident over the county's baseline that counts as a shock.
caveatstring
sourcesstring[]
fiscalYearsobject[]
2 fields
yearinteger
completeboolean
Late reports are in; incomplete years never hold shocks.

OutcomeMeasureInfo

An outcome compared with money.
keystring
Indicator key (see /api/v1/meta).
labelstring
shortLabelstring
descriptionstring
unitstring
decimalsinteger
direction"higher" | "lower" | "neutral"
Catalog direction; the API never labels a difference good or bad.
comparison"percent" | "points"
percent: percent change since the base year (levels); points: change in the value's own unit (rates, shares, per-1,000 flows).
annualization"annual" | "december"
Which value stands for a calendar year: the annual value, or December's for monthly indexes.
sourcestring
yearsobject | null
2 fields
firstinteger
lastinteger

OutcomeFinding

The summary of a domain and outcome pairing.
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
outcomestring
comparison"percent" | "points"
percent: percent change since the base year (levels); points: change in the value's own unit (rates, shares, per-1,000 flows).
headlineYearinteger
strength"too-few" | "unreliable" | "no-clear-difference" | "suggestive-difference" | "consistent-difference"
too-few: under the minimum number of shocks; unreliable: the placebo finds a difference, so the comparison is not trustworthy; no-clear-difference: the interval includes zero; suggestive-difference: the interval excludes zero; consistent-difference: it does with many shocks and the same sign every later year.
direction"higher" | "lower" | null
higher: shock counties changed more than their comparison counties.
shocksinteger
resultobject | null
Mean difference in change (shock − comparison counties) at the headline year, 95% bootstrap interval clustered by county.
3 fields
estimatenumber
ciLownumber | null
ciHighnumber | null
placeboobject | null
The same method dated years before any money; it should find nothing.
3 fields
estimatenumber
ciLownumber | null
ciHighnumber | null
unmatchedinteger
Eligible shocks left out of this outcome (no history, or no close comparison counties).

OutcomesMeta

Domains, outcomes, the crosswalk with each pairing's finding, the method and coverage.
formatinteger
Payload format; bumped on breaking changes.
versionstring
methodobject | null
Method and parameters of the latest computation (more fields than listed here); null before the first.
8 fields
versionstring
computedAtstring | null
shockRationumber
minPopulationinteger
controlsPerShockinteger
calipernumber
confidencenumber
minPooledShocksinteger
crosswalkobject[]
7 fields
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
outcomestring
rationalestring
lagYearsobject
2 fields
mininteger
maxinteger
headlineYearinteger
caveatstring
findingOutcomeFinding | null
shocksobject[]
5 fields
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
shockYearsinteger[]
candidatesinteger
eligibleinteger
excludedRecord<string, integer>
caveatsOutcomeCaveat[]

OutcomesPlace

Money per resident by domain and fiscal year, related outcomes and spending shocks of the nation, a state or a county.
formatinteger
versionstring
methodVersionstring
placeobject
3 fields
geoidstring
namestring
level"nation" | "state" | "county"
moneyobject[]
3 fields
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
seriesobject[]
7 fields
fiscalYearinteger
amountnumber
US dollars.
perResidentnumber | null
populationnumber | null
populationYearinteger | null
completeboolean
coveredboolean
nationalobject[]
2 fields
fiscalYearinteger
perResidentnumber | null
outcomesobject[]
6 fields
keystring
comparison"percent" | "points"
percent: percent change since the base year (levels); points: change in the value's own unit (rates, shares, per-1,000 flows).
chart"change" | "value"
baseYearinteger
seriesobject[]
4 fields
yearinteger
periodstring
valuenumber
changenumber | null
nationalobject[]
4 fields
yearinteger
periodstring
valuenumber
changenumber | null
shocksobject[]
17 fields
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
geoidstring
namestring
fiscalYearinteger
amountnumber
US dollars.
populationnumber
perResidentnumber
US dollars.
baselinePerResidentnumber
Mean money per resident over the county's earlier loaded fiscal years.
baselineYearsinteger
rationumber | null
increasePerResidentnumber
US dollars.
nextPerResidentnumber
US dollars.
persistedboolean
topRecipientSharenumber | null
Share (0–1) of the increase from the single recipient whose money rose most (never who).
eligibleboolean
exclusionReason"single-recipient-spike" | "follows-earlier-shock" | null
effectsobject[] | null
A county's comparisons per outcome (null on states and for excluded shocks).
6 fields
outcomestring
comparison"percent" | "points"
percent: percent change since the base year (levels); points: change in the value's own unit (rates, shares, per-1,000 flows).
baseYearinteger
controlsobject[]
3 fields
geoidstring
namestring
distancenumber
pathobject[]
9 fields
relativeYearinteger
yearinteger
shockValuenumber
shockChangenumber
controlsMeanChangenumber
controlsMinChangenumber
controlsMaxChangenumber
controlsinteger
differencenumber
headlineobject | null
10 fields
relativeYearinteger
yearinteger
shockValuenumber
shockChangenumber
controlsMeanChangenumber
controlsMinChangenumber
controlsMaxChangenumber
controlsinteger
differencenumber
outsideControlRangeboolean
caveatsOutcomeCaveat[]

OutcomesEffects

The pooled event study of a domain and outcome pairing, its placebo, its finding and the shocks behind it.
formatinteger
versionstring
methodVersionstring
pairingobject
6 fields
domain"contracts" | "construction-contracts" | "contracts-and-grants" | "transportation-grants" | "housing-assistance" | "health-grants" | "sba-lending"
Money domain (see domains in /api/v1/outcomes/meta).
outcomestring
rationalestring
lagYearsobject
2 fields
mininteger
maxinteger
headlineYearinteger
caveatstring
findingOutcomeFinding | null
eventStudyobject[]
Pooled difference by relative year (the base year −1 included at 0).
7 fields
relativeYearinteger
shocksinteger
estimatenumber
ciLownumber | null
ciHighnumber | null
meanShockChangenumber
meanControlsChangenumber
placeboobject[]
7 fields
relativeYearinteger
shocksinteger
estimatenumber
ciLownumber | null
ciHighnumber | null
meanShockChangenumber
meanControlsChangenumber
shocksobject[]
10 fields
geoidstring
namestring
fiscalYearinteger
perResidentnumber
US dollars.
baselinePerResidentnumber
US dollars.
rationumber | null
increasePerResidentnumber
US dollars.
controlsinteger
headlineobject | null
4 fields
differencenumber
shockChangenumber
controlsMeanChangenumber
outsideControlRangeboolean
hrefstring
The place payload with this shock's full comparison.
excludedobject
3 fields
singleRecipientSpikeinteger
followsEarlierShockinteger
unmatchedinteger
caveatsOutcomeCaveat[]

RecompeteNotice

A SAM.gov notice that may relate to an award ending soon.
idstring
SAM.gov notice id (use with /api/v1/contracts/opportunities/{id}).
titlestring
noticeTypestring
solicitationNumberstring | null
postedAtstring
ISO timestamp (UTC).
responseDeadlinestring | null
ISO timestamp (UTC).
activeboolean
match"solicitation" | "contract" | "similar"
How it relates to the award: solicitation carries the award's solicitation number; contract cites its contract number; similar is an open notice of the same buying office for the same NAICS or PSC code, posted in the last 12 months. A hint, not a finding: a similar notice may be for other work of the same office.

RecompeteRow

A contract award whose current period of performance ends in the window.
idstring
Analisa award id (use with /api/v1/contracts/awards/{id}).
piidstring
Contract number (PIID).
descriptionstring | null
awardTypestring
FPDS award type code.
agencyobject | null
Awarding subtier agency.
2 fields
idinteger
namestring
officestring | null
Awarding office.
recipientobject | null
The incumbent: the recipient on the latest loaded record of the award.
2 fields
idstring
namestring
placestring | null
placeGeoidstring | null
category"defense-equipment" | "it-telecom" | "research" | "professional" | "construction" | "health" | "maintenance" | "facilities" | … (13)
naicsCodestring | null
pscCodestring | null
setAsidestring | null
FPDS set-aside code.
competition"competed" | "not-competed" | "unknown"
soleSourceboolean
The award was not competed when it was made.
potentialValuenumber
Base and all options.
totalObligatednumber
US dollars.
currentEndDatestring
End of the current period of performance (YYYY-MM-DD), options already exercised included.
potentialEndDatestring | null
End of the period if every option is exercised (YYYY-MM-DD).
optionsRemainingboolean
The potential end date is later than the current one: an option may be exercised instead of recompeting the work.
daysToEndinteger
Days from asOf to the current end date.
lastActionDatestring
Date of the latest modification loaded: how recent the end date is.
relatedNoticesRecompeteNotice[]
At most three, strongest first; empty when none or when they were not computed.

RecompeteSummary

Totals of everything the filters select.
awardsinteger
Awards the filters select in the whole window (not only the page).
potentialValuenumber
US dollars.
soleSourceinteger
withOptionsinteger
Awards with options left.
byMonthobject[]
Oldest first; months without awards are absent. The first and last months may be partial (the window starts on asOf).
5 fields
monthstring
YYYY-MM of the current end date.
awardsinteger
potentialValuenumber
US dollars.
soleSourceinteger
withOptionsinteger
topAgenciesobject[]
The ten toptier agencies with the most potential value ending in the window.
4 fields
idinteger
namestring
awardsinteger
potentialValuenumber
US dollars.

RecompetePage

A page of the recompete calendar.
asOfstring
The day the window starts (UTC, YYYY-MM-DD).
windowobject
3 fields
months6 | 12 | 18 | 24
startstring
Included.
endstring
Excluded.
filtersobject
The filters applied, after normalization and after the caller's plan was taken into account (access.ignored lists what was dropped).
12 fields
window6 | 12 | 18 | 24
floor1000000 | 2500000 | 5000000 | 10000000 | 25000000 | 50000000 | 100000000
Minimum potential value, US dollars.
agencyIdinteger | null
subtierIdinteger | null
officeIdinteger | null
recipientIdstring | null
naicsstring | null
pscstring | null
setAside"none" | "small-business" | "8a" | "hubzone" | "sdvosb" | "wosb" | "veteran" | "indian" | … (9) | null
geoidstring | null
soleSourceboolean
options"any" | "with" | "without"
accessobject
4 fields
tier"full" | "preview"
full: the recompete calendar plan. preview: anonymous and free callers.
rowCapinteger | null
Most rows the caller can list (null: all, 25 per page). A preview lists the soonest ten, or five of one buyer or company, with no next page.
ignoredstring[]
Filters the request asked for that the caller's plan does not include; they were not applied.
exportboolean
Whether the caller may use the CSV export.
rowsRecompeteRow[]
Soonest current end date first; the award id breaks ties.
nextCursorstring | null
Pass back as cursor for the next page; null on the last page (and always for a preview).
summaryRecompeteSummaryoptional
With summary=1 on the first page.
sourceSourceInfo
Contracts: USAspending.gov prime award transactions (FPDS). Cite the vintage with the end dates.
noticesSourceSourceInfo
Notices: SAM.gov Contract Opportunities.
partialtrueoptional
Present when an optional part timed out and is empty: the response is sent with no-store and no ETag; retry later for the full payload.

WhereToLiveCriteria

What a person looking for a place to live asked for. Every field is optional and unknown fields are ignored.
v1optional
Criteria version (1). Defaults to the current one.
level"city" | "metro" | "county"optional
Which places are ranked: city (default), metro or county.
profile"explorer" | "remote" | "family" | "retiree" | "young-professional"optional
Persona the priorities start from (explorer, family, retiree, remote, young-professional); it also sets indicator emphasis. Default explorer.
statesstring[]optional
USPS state codes to rank within; empty or absent: anywhere in the 50 states and DC.
sizes("small-town" | "mid-size" | "big-city")[]optional
Place sizes to keep: small-town (1,000–25,000 residents), mid-size (25,000–250,000), big-city (250,000 and up).
housingobjectoptional
3 fields
mode"rent" | "buy"optional
Default rent.
monthlyBudgetnumberoptional
Monthly rent, or monthly mortgage payment with property tax, the household is comfortable with (US dollars).(≥ 0)
downPaymentnumberoptional
Share of the price paid up front when buying (0–1). Default 0.2.(≥ 0, ≤ 1)
incomenumberoptional
Gross yearly household income (US dollars), for the share-of-income figures.(≥ 0)
householdobjectoptional
4 fields
adultsintegeroptional
(≥ 1, ≤ 8)
infantsintegeroptional
Children under 2 (infant center care prices).(≥ 0, ≤ 6)
preschoolersintegeroptional
Children aged 2 to 4 (preschool center care prices).(≥ 0, ≤ 6)
schoolAgeintegeroptional
(≥ 0, ≤ 10)
occupationstringoptional
SOC occupation code (15-1252), for local wages of the person's job.(pattern ^\d{2}-\d{4}$)
prioritiesRecord<string, integer>optional
Importance of each scored category, 0 (leave out) to 5; 3 is the catalog default. Categories not listed take the persona's weight.
climate"warm" | "mild" | "four-seasons" | "cool"optional
Climate preference: warm, mild, four-seasons or cool (ranges of January lows and July highs).
commuteobjectoptional
3 fields
destinationobject
3 fields
labelstring
(≤ 120 chars)
latnumber
(≥ -90, ≤ 90)
lngnumber
(≥ -180, ≤ 180)
mode"car" | "transit" | "bike"optional
Default car.
maxMinutesintegeroptional
Longest one-way commute in minutes (a straight-line estimate). Default 45.(≥ 5, ≤ 180)
mustHaveobjectoptional
5 fields
airportMilesnumberoptional
Farthest distance to a commercial airport.(≥ 1, ≤ 500)
hospitalMilesnumberoptional
Farthest distance to an emergency room.(≥ 1, ≤ 500)
railMilesnumberoptional
Farthest distance to a rail station.(≥ 1, ≤ 500)
saferThanMedianbooleanoptional
Only places safer than the median place of their level.
avoidHighHazardbooleanoptional
Leave out places in the highest natural hazard risk band.
perMetrointegeroptional
Most results from one metro area. Default 2.(≥ 1, ≤ 20)
limitintegeroptional
Results returned. Default 12.(≥ 3, ≤ 50)

WhereToLiveStanding

An indicator that argues for or against a place.
keystring
Indicator key.
labelstring
scoreinteger
Percentile score among places of the level (0–100, 100 = best).
borrowedboolean
The value is the county's, not the place's own.

WhereToLivePlaceRef

A related place (a city's county, a county's or city's metro area).
geoidstring
namestring
hrefstring | null
Site path of its page.

WhereToLiveResult

One ranked place with how it fits and why.
geoidstring
rankinteger
1 for the best match.
matchnumber
0–100: how well the place fits everything the person said, penalties included.
qualitynumber
0–100: weighted quality of life on the person's priorities alone.
climatenumber | null
0–100 fit to the climate preference; null without one or without the normals.
housingobject | null
Monthly housing cost of the typical home: the asking rent, or the mortgage payment plus property tax (loan, tax). Null when the place lacks the figure.
4 fields
mode"rent" | "buy"
monthlynumber
US dollars a month.
loannumberoptional
taxnumberoptional
childCarenumber | null
Monthly center care for the household's infants and preschoolers (0 without them; null when unpriced).
budgetRationumber | null
Housing cost over the budget (1 = exactly the budget).
incomeSharenumber | null
Housing plus child care as a share of gross monthly income (0–1).
commuteobject | null
Straight-line estimate from the place's center to the destination.
2 fields
milesnumber
minutesnumber
penaltiesobject
Points taken off for housing over budget and for unknown must-have distances.
2 fields
budgetnumber
unknownnumber
categoriesRecord<string, number | null>
Category scores (0–100) of the person's priorities.
coveragenumber
Share of the person's weight backed by data (0–1).
borrowedSharenumber
Share of the covered weight that is the county's value (0–1).
confidence"high" | "medium" | "low"
warnings("no-housing-cost" | "no-property-tax" | "no-climate" | "unknown-distance" | "no-location" | "no-child-care-price")[]
namestring
labelstring
"Austin, TX", "Travis County, TX", "Austin-Round Rock-Georgetown, TX".
stateCodestring | null
stateNamestring | null
populationnumber | null
latnumber | null
lngnumber | null
hrefstring | null
Site path of the place's page.
housingBasisstring | null
Indicator key the housing cost was taken from: market_rent or median_gross_rent (renting), typical_home_value or median_home_value (buying).
countyWhereToLivePlaceRef | null
strengthsWhereToLiveStanding[]
Up to three indicators that argue for the place, ranked by how much they move this person's score.
tradeoffsWhereToLiveStanding[]
Up to three weak indicators in categories the person weighed at least normal.

WhereToLiveSource

A source the ranking read.
idstring
namestring
publisherstring
homepagestring
attributionstring
Credit line to show with the figures.
vintagestring | null
Release the data is current to.
indicatorsobject[]
Indicators of this source the ranking read, with their newest period.
3 fields
keystring
labelstring
periodstring | null

WhereToLiveResponse

Places ranked for a person's criteria, with the provenance of every figure.
criteriaWhereToLiveCriteria
The criteria as read, with defaults filled in.
consideredinteger
Places of the level.
eligibleinteger
Places that passed every filter (before the per-metro cap and the limit).
excludedRecord<string, integer>
How many places each filter removed, so a caller can say what to relax.
notices("few-results" | "no-mortgage-rate" | "commute-unreachable")[]
provenanceobject
6 fields
methodstring
Version of the method, e.g. "relocation@1" (see /methodology#where-to-live).
datasetVersionstring
level"state" | "metro" | "county" | "city"
generatedAtstring
mortgageRateobject | null
The 30-year rate buying costs used.
3 fields
valuenumber
periodstring | null
source"freddie-mac-pmms" | "user"

ScreeningSupplier

One supplier to check: a uei, a cage or both (at least one).
ueistringoptional
Unique Entity ID (UEI) of SAM.gov: 12 letters or digits.(pattern ^[A-Za-z0-9]{12}$)
cagestringoptional
CAGE code: 5 letters or digits (00000 is SAM.gov's placeholder and is refused).(pattern ^[A-Za-z0-9]{5}$)

ScreeningCheckRequest

The suppliers to check.
suppliersScreeningSupplier[]
1 to 100 suppliers. Each counts one row of the monthly screening allowance.

ScreeningExclusion

A SAM.gov exclusion record that lists the supplier's UEI or CAGE code (a reported match).
idstring
Analisa id of the SAM.gov exclusion record.
namestring
Name on the record.
agencystring | null
Excluding agency (SAM.gov code).
agencyNamestring | null
exclusionTypestring
As SAM.gov publishes it, e.g. Ineligible (Proceedings Completed).
typeLabelstring
Plain-language type.
programstring | null
Reciprocal, Procurement or NonProcurement.
activeDatestring | null
YYYY-MM-DD.
terminationDatestring | null
YYYY-MM-DD; null when indefinite.
endedAtstring | null
Data date (YYYY-MM-DD) of the first SAM.gov snapshot that no longer listed the record: the exclusion ended between the previous snapshot and this date. Null while listed.
matchedBy"uei" | "cage"
The record lists the same UEI, or the same CAGE code, as the supplier.
barsAwardsboolean
Whether this exclusion bars new federal contract awards (procurement and reciprocal exclusions, and OFAC sanctions).
samUrlstring | null
The record's page on SAM.gov, when it has one.

ScreeningResult

What screening found for one supplier.
indexinteger
Position of the supplier in the request (0-based).
ueistring | null
The UEI as checked (upper case).
cagestring | null
The CAGE code as checked (upper case).
status"active" | "ended" | "none"
active: a record that lists the supplier's identifier is currently listed; ended: only records that SAM.gov no longer lists; none: no record lists the identifier.
exclusionsScreeningExclusion[]
At most five records, those in effect first.
totalExclusionsinteger
Records that list the identifier, all of them.
recipientobject | null
The federal contract recipient with this UEI, when one is in the data (null: no federal prime contract loaded for it, which says nothing about exclusions).
4 fields
idstring
namestring
statestring | null
profileUrlstring
contractsobject | null
Null without a recipient.
5 fields
obligationsobject[]
Obligations of the last three fiscal years loaded, oldest first.
2 fields
fiscalYearinteger
amountnumber
US dollars.
notCompetedSharenumber | null
Share (0 to 1) of those obligations not competed; null without obligations.
singleOfferSharenumber | null
Share (0 to 1) competed with a single offer.
excludedActionsinteger
Contract actions (new awards, options, added work) dated while the recipient was excluded.
excludedObligationsnumber
US dollars.
lobbyingboolean | null
The recipient has lobbying disclosures through an organization matched by AI (null without a recipient).

ScreeningCheckResponse

The results of a screening call.
resultsScreeningResult[]
One per supplier, in request order.
chargedinteger
Rows counted against the monthly allowance by this call.
usageobject
The monthly allowance after this call.
4 fields
limitinteger
usedinteger
remaininginteger
resetsAtstring
First instant of the next UTC month (ISO timestamp).
sourcesobject[]
What the results reflect, with vintages.
3 fields
idstring
namestring
vintagestring | null
Release date of the data read (YYYY-MM-DD).
noticestring
What a result means: always confirm in SAM.gov before a decision.