What your request targets
Shovels building permit records records through a supported listing operation. Catalog markets: United States.
Search building-permit index records for one US street address through the Shovels pay-per-record API (v2): a provider address match resolves a geo_id, then indexed jurisdiction filings return with dates, status, job value, fees, tags and contractor id. Permits are provider-indexed filings — not a complete permit history, title, contractor verification or code-compliance proof; coverage varies across ~20k jurisdictions. Documentation-backed beta.
Search supported Shovels listings and read retained observations with source identifiers, typed values and collection times. The catalog lists source detail and specialist operations separately. Each endpoint has a documented request, response schema, and credit cost.
GET /v1/properties/{property_id}
Read your account’s saved permit-search property observation.
property_id
GET /v1/properties/{property_id}/records
Read the address-resolution record saved with your permit-search property.
property_id
POST /v1/permits/search
Search Shovels building-permit index records for one resolved US street address.
address
GET /v1/properties/{property_id}/permits
Read the permit observations saved with your Shovels property.
property_id
Check live capabilities for operation and market availability. Unavailable requests are not charged.
Checking current source coverage…
Source request · Fetches the source through the enabled adapter.
curl -X POST 'https://realtycrawl.dev/v1/permits/search' \
-H "x-api-key: $REALTYCRAWL_API_KEY" \
-H 'X-Max-Credits: 50' \
-H "Idempotency-Key: YOUR_IDEMPOTENCY_KEY" \
-H "content-type: application/json" \
-d '{"address":{"formatted":"123 Example Street, Austin, TX","country":"US"}}'// Live requests require a RealtyCrawl API key.
// Copy the request to your backend and set REALTYCRAWL_API_KEY.
// Check source and operation availability before running a request.Integrate a source-linked real estate API with standard HTTP requests, one API key, and structured JSON responses.
Send your RealtyCrawl API key in the x-api-key header. Keep it in your server environment.
Use path and query parameters for GET requests. Send a JSON body for POST operations.
Source requests cost 50 credits per successful call. Saved reads cost 1 credit per observation, including successful saved-batch items. Failed calls are refunded; usage and balance appear in the response headers.
JSON keeps data and meta together. Field projection and CSV/NDJSON exports are response options; export request and credit metadata stays in headers.
From a supported source operation to data in your application.
GET /v1/meta/capabilitiesConfirm coverage and accepted selectors.POST /v1/permits/searchSend the inputs for the selected operation.data + metaInspect results, source outcomes, and warnings.Your applicationPreserve identifiers and observation times.Request
curl --request POST 'https://realtycrawl.dev/v1/permits/search' \
--header "x-api-key: $REALTYCRAWL_API_KEY" \
--header 'X-Max-Credits: 50' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: YOUR_IDEMPOTENCY_KEY' \
--data '{"address":{"formatted":"123 Example Street, Austin, TX","country":"US"}}'Illustrative response
{
"data": [{"id":"permit_shovels_4b825dc642cb6eb9a060e54bf8d69288","property_id":"prop_shovels_4b825dc642cb6eb9a060e54bf8d69288","source":{"platform":"shovels","provider":"shovels","country":"US","access_class":"licensed_feed","observed_at":"2026-01-01T12:00:00Z","retrieved_at":"2026-01-01T12:00:00Z","native_id":"prm_9f8e7d6c","url":null},"permit_number":"2024-118234","permit_type":"Residential - Solar Panel Installation","description":"INSTALL ROOF-MOUNTED PHOTOVOLTAIC SYSTEM 9.6 KW","status":"final","jurisdiction":"Bexar County","event_dates":{"filed":"2024-06-03","issued":"2024-06-14","started":"2024-07-01","ended":"2024-07-08","finaled":"2024-07-12"},"durations_days":{"total":39,"construction":7,"approval":11},"inspection_pass_rate":1,"job_value":{"amount":"18500","currency":"USD","kind":"unknown","period":"one_time","min":null,"max":null,"unit_code":null,"display_text":null},"fees":{"amount":"312","currency":"USD","kind":"unknown","period":"one_time","min":null,"max":null,"unit_code":null,"display_text":null},"tags":["solar","electrical","roof"],"contractor_id":"ctr_51d2e9f4"}],
"meta": {
"request_id": "example_request",
"schema_version": "1.0.0",
"generated_at": "2026-01-01T12:00:00Z",
"completeness": "unknown",
"sources": [
{
"platform": "shovels_permits",
"status": "success"
}
]
}
}Source context stays with the property observations.
One request keeps the source, operation, and result connected.
Your path selects the platform and operation. Capabilities describe accepted selectors and markets.
The gateway routes supported requests to the configured source and records its outcome.
Property attributes, prices, and units are mapped into a shared JSON schema.
Completeness, warnings, and source timestamps help your application interpret the result.
A source request becomes a structured observation, with its origin and collection time attached.
Shovels building permit records records through a supported listing operation. Catalog markets: United States.
Search returns normalized listing IDs for saved reads. Use URL or native-ID detail only where that source operation is documented and enabled.
Operation-specific resource fields sit alongside source identifiers, collection times, and completeness metadata.
Collection time and source update time describe different events. Stored observations expire after 24 hours without triggering a fresh crawl.
SOURCE → SHARED SCHEMA
Listing identifier
→ source.native_id
Published asking price
→ price.amount + currency
Collection timestamp
→ source.observed_at
Source-linked data for property products and research.
4
documented operations
1–50
credits per call / batch item
Search supported Shovels listings and read retained observations with source identifiers, typed values and collection times. The catalog lists source detail and specialist operations separately.
Coverage and field availability vary by source. Check capabilities before you start a workload.
Turn building permit records observations into tools your team can use.
Check indexed permit filings for a property before underwriting, diligence or renovation analysis — filings as indexed, not a complete history.
Read provider permit tags, types, job value and fees as source-reported estimates for renovation and improvement analysis.
Connect one source to the tools and workflows you already use.
REST · application backend
Search returns normalized listing IDs for saved reads. Use URL or native-ID detail only where that source operation is documented and enabled.
JSON · notebooks · BI
Compare property observations with their currencies, area units, and timestamps.
MCP · tools · agents
Give an assistant supported data operations with explicit request budgets.
Choose an operation, supply its inputs, and send your API key from your backend.
Read a saved permit property
curl --request GET 'https://realtycrawl.dev/v1/properties/prop_shovels_4b825dc642cb6eb9a060e54bf8d69288' \
--header "x-api-key: $REALTYCRAWL_API_KEY" \
--header 'X-Max-Credits: 1'Read a saved permit record
curl --request GET 'https://realtycrawl.dev/v1/properties/prop_shovels_4b825dc642cb6eb9a060e54bf8d69288/records' \
--header "x-api-key: $REALTYCRAWL_API_KEY" \
--header 'X-Max-Credits: 1'Search building permits for an address
curl --request POST 'https://realtycrawl.dev/v1/permits/search' \
--header "x-api-key: $REALTYCRAWL_API_KEY" \
--header 'X-Max-Credits: 50' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: YOUR_IDEMPOTENCY_KEY' \
--data '{"address":{"formatted":"123 Example Street, Austin, TX","country":"US"}}'Read saved building permits
curl --request GET 'https://realtycrawl.dev/v1/properties/prop_shovels_4b825dc642cb6eb9a060e54bf8d69288/permits' \
--header "x-api-key: $REALTYCRAWL_API_KEY" \
--header 'X-Max-Credits: 1'JSON responses preserve the operation data and request metadata. Supported data operations also offer response field projection and CSV/NDJSON exports.
Read your account’s saved permit-search property observation.
Read the address-resolution record saved with your permit-search property.
Search Shovels building-permit index records for one resolved US street address.
Read the permit observations saved with your Shovels property.
Keep the source context while using the same request and response conventions across your integration.
| Your application needs | Source context | RealtyCrawl contract |
|---|---|---|
| Resource identity | Source-scoped resource identifier | Source reference and RealtyCrawl ID |
| Operation data | Source-specific fields and units | Typed resource schemas and explicit missing values |
| Freshness | Collection and update times | Explicit observation timestamps |
| Missing information | Source-dependent attributes | Nullable fields and field_status |
| Coverage | Operation and market availability | Live capabilities and source outcomes |
| Diagnostics | Source warnings and errors | Request IDs and completeness metadata |
| Authentication | A request to RealtyCrawl | One API key across supported platforms |
Find answers to common questions about the Shovels API, credits, and coverage.
Contact usGet a RealtyCrawl API key, check Shovels in /v1/meta/capabilities, and send a supported request from your backend with the x-api-key header.
The catalog describes request contracts. Live enablement, accepted location selectors, and supported markets are declared per operation in /v1/meta/capabilities. Check the exact operation before running a workload.
Source requests cost 50 credits per successful call. Saved reads cost 1 credit per observation, including successful saved-batch items. Signup includes 500 trial credits. Failed calls are refunded. Read the credit headers for the charge and remaining balance.
No. Data varies by source, market, and operation. Nullable fields and field_status distinguish missing, unsupported, restricted, and temporarily unavailable values. Keep response warnings with the result.
Stored listing, media, and history observations expire after 24 hours and do not trigger a new crawl. Inspect observed_at, source_updated_at, and response metadata to understand the age of a record.
RealtyCrawl is an independent data API and is not affiliated with Shovels. Source availability and supported operations are declared in the capabilities endpoint.
Yes. One RealtyCrawl API key authenticates supported operations across the catalog. Check capabilities when adding a platform because availability and accepted inputs vary.