GSA Federal Website Index
GSA's official federal website discovery and site-scanning data.
Source, grain and coverage
Seeds GovBiz's approved website registry. A listed website does not mean all of its content has been collected.
Directory membership identifies public website targets. It does not establish page retrieval, domain approval, full-site coverage or procurement content. Directory refresh and successful crawl watermarks are separate.
Collection schedule: Weekly.
This source identifies publishing locations. It does not establish complete record collection for every listed agency.
Definitions audited . Use source status and the returned watermarks to inspect current collection health.
REST and MCP access
Use a credential with intelligence scope and enable that data domain in your workspace.
curl 'https://www.govbiz.ai/api/v2/catalogue/sources/agency-web-gsa-site-scanning-refresh/records?limit=2' \ -H "Authorization: Bearer $GOVBIZ_API_KEY"
The primary dataset is website_source_directory. Select another dataset from this source with dataset_id. Supported field names can be used as exact filters; the versioned query endpoint also supports declared ranges and list operators.
Through canonical /mcp, use govbiz_discover_datasets, govbiz_describe_dataset, govbiz_search_records, and govbiz_get_evidence. Cross-source relationships use govbiz_get_related_records and require access to every involved domain.
API contracts · MCP setup · Workspace data domains
Query this source →Website Source Directory
website_source_directory · Schema 1
One retained public website-source registration per source_id; directory discovery and successful page retrieval are separate events.
Search modes: structured, lexical. History: Current retained projection; exact historical reconstruction is unsupported.
Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.
Field definitions and supported filters · 20 fields
| Field | Type / unit | Meaning | Availability and filters |
|---|---|---|---|
source_id | string | GovBiz source-registry UUID in these SQL relations; not the collector job ID or publisher record ID.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity. | Values can be missingeq, in, is_null, contains |
source_key | string | Stable registry source key; separate from UUID and collector job aliases.Storage and value limits: Maximum 160 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
organization_id | string | GovBiz public federal organization identifier; not a tenant or company-profile ID.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity. | Values can be missingeq, in, is_null, contains |
organization_name | string | Public organization name projected by a registry view.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ. | Values can be missingeq, in, is_null, contains |
source_name | string | Human source/publisher label.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ. | Values can be missingeq, in, is_null, contains |
source_type | string | Registry source representation kind; directories and record feeds have different coverage.Storage and value limits: Maximum 32 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
root_url | string | Registered website root location.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ. | Values can be missingeq, in, is_null, contains |
canonical_domain | string | Normalized website hostname.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ. | Values can be missingeq, in, is_null, contains |
discovery_source | string | Authority/export used to discover a registry entry.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ. | Values can be missingeq, in, is_null, contains |
crawl_enabled | boolean | Whether the approved source/URL is enabled for crawling; not whether its content is complete.Storage and value limits: Boolean physical type; defaults/omitted source fields can still mean unverified or not collected. | Values can be missingeq, in, is_null |
status | string | Relation-specific source or operational status; use check constraints where declared and the producer mapping elsewhere.Storage and value limits: Maximum 24 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
priority | integer | Internal crawl/source priority; not a recommendation or probability of procurement.Storage and value limits: Signed 16-bit integer; logical domain constraints can be narrower. | Values can be missingeq, in, is_null, gte, lte |
default_crawl_class | string | Source default URL scheduling class.Storage and value limits: Maximum 24 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
default_check_interval | integer | Source default revisit duration.Storage and value limits: PostgreSQL duration; calendar months and fixed seconds are not interchangeable. | Values can be missingeq, in, is_null, gte, lte |
last_discovered_at | datetime | Most recent directory/discovery observation.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision. | Values can be missingeq, in, is_null, gte, lte |
last_checked_at | datetime | Most recent URL/source check, not necessarily a successful retrieval.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision. | Values can be missingeq, in, is_null, gte, lte |
last_successful_crawl_at | datetime | Last successful website crawl; distinct from directory discovery freshness.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision. | Values can be missingeq, in, is_null, gte, lte |
last_http_status | integer | HTTP status of the most recent source/URL attempt.Storage and value limits: Signed 32-bit integer; logical domain constraints can be narrower. | Values can be missingeq, in, is_null, gte, lte |
created_at | datetime | GovBiz row/version creation time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision. | Values can be missingeq, in, is_null, gte, lte |
updated_at | datetime | GovBiz last row update time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision. | Values can be missingeq, in, is_null, gte, lte |