One key, many sources
Use the same credential across supported operations and check capabilities for each source.
Find Land.com / Lands of America listings with a supported location selector. Inspect source completeness and pagination in the response. Get structured JSON through one RealtyCrawl API key.
Start with a supported location selector and transaction type. Check live capabilities for accepted inputs and availability before running your request.
Find Land.com / Lands of America listings for a supported location and transaction. Use the returned source IDs to continue into listing details.
Example request
curl --request POST 'https://realtycrawl.dev/v1/land_com/listings/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 '{"location":{"kind":"text","query":"Austin, TX","country":"US"},"transaction":"sale"}'import os
import json
import requests
headers = {
"X-Max-Credits": "50",
"Content-Type": "application/json",
"Idempotency-Key": "YOUR_IDEMPOTENCY_KEY"
}
headers["x-api-key"] = os.environ["REALTYCRAWL_API_KEY"]
payload = json.loads("{\"location\":{\"kind\":\"text\",\"query\":\"Austin, TX\",\"country\":\"US\"},\"transaction\":\"sale\"}")
response = requests.request("POST", "https://realtycrawl.dev/v1/land_com/listings/search",
headers=headers, json=payload, timeout=60)
response.raise_for_status()
print(json.dumps(response.json(), indent=2))const response = await fetch("https://realtycrawl.dev/v1/land_com/listings/search", {
method: "POST",
headers: {
"x-api-key": process.env.REALTYCRAWL_API_KEY,
...{
"X-Max-Credits": "50",
"Content-Type": "application/json",
"Idempotency-Key": "YOUR_IDEMPOTENCY_KEY"
}
},
body: JSON.stringify({
"location": {
"kind": "text",
"query": "Austin, TX",
"country": "US"
},
"transaction": "sale"
})
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
console.log(await response.json());| Parameter | Required | Description |
|---|---|---|
| location | Yes | A location selector supported by this source: text, postal code, bounding box, radius, polygon, or source region. Check capabilities before choosing one. |
| transaction | Yes | Transaction type: sale, rent, lease, or auction. Support varies by source. |
| property_types | No | An array of property types to include, where supported by the source. |
| status | No | An array of listing statuses to include, where supported. |
| price | No | Minimum and/or maximum price, with a currency. Include a period when filtering recurring prices. |
| bedrooms | No | Minimum and/or maximum bedroom count. |
| bathrooms | No | Minimum and/or maximum bathroom count. |
| area | No | Area bounds with a unit (sqm, sqft, acre, or hectare) and measurement basis. |
| listed_since | No | Return listings from this date and time, in ISO 8601 format, where supported. |
| sort | No | Sort by source_order, price_asc, price_desc, or newest, where supported. |
| include | No | Optional data groups such as media, history, agent, agency, units, open_houses, or source_fields. |
| source_filters | No | Source-specific filters keyed by platform. Accepted filters depend on the source. |
| limit | No | Requested result count, from 1 to 100. The default is 20; source limits may also apply. |
| cursor | No | The continuation cursor from a preceding response, for sources that support pagination. |
| allow_partial | No | Allow a partial result when supported. Defaults to false; inspect meta for completeness and warnings. |
| group_by_property | No | Request property grouping metadata. Defaults to false. |
Send these parameters in a JSON body. Check the documentation for nested location selectors and filter options.
The response includes an array of listings in data, plus source outcomes and request metadata. Explore the structure below before making a call.
{
"data": [
{
"id": "example_listing",
"source": {
"platform": "land_com",
"native_id": "EXAMPLE_LISTING_ID",
"provider": "example",
"observed_at": "2026-01-01T12:00:00Z",
"access_class": "public_portal"
},
"transaction": "sale",
"status": "unknown",
"property": {
"id": null,
"address": {
"country": "US"
},
"property_type": "unknown"
},
"price": {
"amount": null,
"currency": null,
"kind": "unknown"
},
"observed_at": "2026-01-01T12:00:00Z"
}
],
"meta": {
"request_id": "example_request",
"schema_version": "1.0.0",
"generated_at": "2026-01-01T12:00:00Z",
"completeness": "unknown",
"sources": [
{
"platform": "land_com",
"status": "success"
}
]
}
}Schema example with placeholder values; not a live source result. Actual fields, values, and completeness vary by source and request.
Send a POST request with your API key and accepted inputs. RealtyCrawl returns structured JSON and preserves the source context for your application.
Method
POST
Response
JSON
POST /v1/land_com/listings/searchKeep source collection behind a shared interface so you can focus on the product you’re building.
Use familiar HTTP requests, inspect a common schema, and connect the results to the tools your team already uses.
Use the same credential across supported operations and check capabilities for each source.
Keep currencies, area units, source identifiers, and observation times with your results.
Call the API with cURL, Python, TypeScript, or any backend that can send an HTTP request.
import requests
# Check current source availability before collecting.
response = requests.get(
'https://realtycrawl.dev/v1/meta/capabilities',
params={'platform': 'zillow'}
)
response.raise_for_status()
capabilities = response.json()// Check current source availability before collecting.
const response = await fetch(
'https://realtycrawl.dev/v1/meta/capabilities?platform=zillow'
);
if (!response.ok) throw new Error('Request failed');
const capabilities = await response.json();curl 'https://realtycrawl.dev/v1/meta/capabilities?platform=zillow'import requests
# Check current source availability before collecting.
response = requests.get(
'https://realtycrawl.dev/v1/meta/capabilities',
params={'platform': 'redfin'}
)
response.raise_for_status()
capabilities = response.json()// Check current source availability before collecting.
const response = await fetch(
'https://realtycrawl.dev/v1/meta/capabilities?platform=redfin'
);
if (!response.ok) throw new Error('Request failed');
const capabilities = await response.json();curl 'https://realtycrawl.dev/v1/meta/capabilities?platform=redfin'import requests
# Check current source availability before collecting.
response = requests.get(
'https://realtycrawl.dev/v1/meta/capabilities',
params={'platform': 'realtor'}
)
response.raise_for_status()
capabilities = response.json()// Check current source availability before collecting.
const response = await fetch(
'https://realtycrawl.dev/v1/meta/capabilities?platform=realtor'
);
if (!response.ok) throw new Error('Request failed');
const capabilities = await response.json();curl 'https://realtycrawl.dev/v1/meta/capabilities?platform=realtor'import requests
# Check current source availability before collecting.
response = requests.get(
'https://realtycrawl.dev/v1/meta/capabilities',
params={'platform': 'rightmove'}
)
response.raise_for_status()
capabilities = response.json()// Check current source availability before collecting.
const response = await fetch(
'https://realtycrawl.dev/v1/meta/capabilities?platform=rightmove'
);
if (!response.ok) throw new Error('Request failed');
const capabilities = await response.json();curl 'https://realtycrawl.dev/v1/meta/capabilities?platform=rightmove'import requests
# Check current source availability before collecting.
response = requests.get(
'https://realtycrawl.dev/v1/meta/capabilities',
params={'platform': 'idealista'}
)
response.raise_for_status()
capabilities = response.json()// Check current source availability before collecting.
const response = await fetch(
'https://realtycrawl.dev/v1/meta/capabilities?platform=idealista'
);
if (!response.ok) throw new Error('Request failed');
const capabilities = await response.json();curl 'https://realtycrawl.dev/v1/meta/capabilities?platform=idealista'{
"platform": "zillow",
"operation": "searchPlatformListings",
"status": "active",
"geographies": [
"US"
],
"execution": "sync"
}{
"platform": "redfin",
"operation": "searchPlatformListings",
"status": "active",
"geographies": [
"US"
],
"execution": "sync"
}{
"platform": "realtor",
"operation": "searchPlatformListings",
"status": "active",
"geographies": [
"US"
],
"execution": "sync"
}{
"platform": "rightmove",
"operation": "searchPlatformListings",
"status": "active",
"geographies": [
"GB"
],
"execution": "sync"
}{
"platform": "idealista",
"operation": "searchPlatformListings",
"status": "active",
"geographies": [
"ES"
],
"execution": "sync"
}Find answers to common questions about Land.com / Lands of America requests, responses, and credits.
Contact usCreate an account for 100 trial credits, check live capabilities for Land.com / Lands of America, and use the example request above with your API key. This operation lists 50 credits per successful call.
A collection of listings in data, with property, price, and source fields. The meta object includes request diagnostics and source outcomes. Fields depend on what the source publishes.
Send the parameters in a JSON request body with Content-Type: application/json. Put your API key in the x-api-key header.
Availability is operation-specific. Check /v1/meta/capabilities for the platform’s live status, accepted selectors, and markets. Unavailable requests are not charged.
RealtyCrawl is an independent real estate data API and is not affiliated with Land.com / Lands of America.
Get your API key and start building a source-linked property workflow.
50 credits per successful call · Failed calls are refunded