Opendoor APIOpendoor.com ↗
Access Opendoor home listings across US markets. Search by price, beds, and baths. Retrieve property details including photos, schools, and coordinates.
What is the Opendoor API?
The Opendoor API exposes 2 endpoints that return home listings and detailed property data from Opendoor.com across US markets. The search_listings endpoint lets you filter active listings by market, bedroom count, bathroom count, and price range, returning up to 30 results per call with address, price in cents, square footage, and a photo URL. The get_property_details endpoint expands any listing into full property data including GPS coordinates, lot size, year built, listing history, and nearby schools.
curl -X GET 'https://api.parse.bot/scraper/30a9df8f-f592-4434-94ff-282a928c9b5c/search_listings?market=atlanta' \ -H 'X-API-Key: $PARSE_API_KEY'
Search Opendoor home listings by market with optional bedroom, bathroom, and price filters. Returns up to 30 listings per call sorted by newest listing date. Each listing includes address, price, bed/bath counts, square footage, and a photo URL. Use the returned address_id and slug to fetch full property details via get_property_details.
| Param | Type | Description |
|---|---|---|
| market | string | Opendoor market identifier (e.g. 'atlanta', 'dallas', 'salt_lake_city', 'charlotte'). Corresponds to available markets on the site. |
| min_beds | integer | Minimum number of bedrooms to filter by. |
| max_price | integer | Maximum list price in whole dollars (e.g. 400000 for $400,000). |
| min_baths | integer | Minimum number of bathrooms to filter by. |
| min_price | integer | Minimum list price in whole dollars (e.g. 200000 for $200,000). |
{
"type": "object",
"fields": {
"market": "string — market identifier",
"listings": "array of listing objects with address_id, full_address, street, city, state, slug, list_price_cents, bedrooms, bathrooms, square_footage, dwelling_type, neighborhood, photo_url",
"total_count": "integer — total matching listings in this market",
"market_display_name": "string — human-readable market name"
},
"sample": {
"data": {
"market": "atlanta",
"listings": [
{
"city": "Springfield",
"slug": "123-Main-St-Springfield-IL-62704",
"state": "IL",
"street": "123 Main St",
"bedrooms": 3,
"bathrooms": 2,
"photo_url": "https://images.opendoor.com/source/s3/cabinet-assets/production/storage/ce8bc9ac-b3c6-5903-a56e-00d98c2b29d7.jpg",
"address_id": "19c56e1c-29ee-57f0-a750-0dead99b9fae",
"full_address": "123 Main St, Springfield, IL 62704",
"neighborhood": null,
"dwelling_type": "HOUSE",
"square_footage": 1359,
"list_price_cents": 14500000
}
],
"total_count": 328,
"market_display_name": "Atlanta"
},
"status": "success"
}
}About the Opendoor API
Search Listings
The search_listings endpoint accepts a market identifier (e.g. 'atlanta', 'dallas', 'salt_lake_city', 'charlotte') along with optional numeric filters: min_beds, min_baths, min_price, and max_price. Results are sorted by newest listing date and return up to 30 listings per call. Each listing object includes address_id (a UUID), full_address, street, city, state, slug, list_price_cents, bedrooms, bathrooms, and square_footage, plus a photo URL. The response also surfaces total_count for the filtered market and market_display_name for display purposes.
Property Details
The get_property_details endpoint requires both the slug and address_id values returned by search_listings. The response covers the full property record: latitude and longitude coordinates, zip, state, bedrooms, bathrooms, a photos array of image URLs, a schools array with nearby school names and ratings, plus additional fields such as lot size, year built, and listing history. This makes it straightforward to build a complete property card without a second lookup layer.
Coverage and Pagination
Market coverage maps to Opendoor's active US sell markets. Each search_listings call returns at most 30 listings; if total_count exceeds 30, repeated calls with adjusted price or bedroom filters can be used to page through the inventory. Price values are expressed in whole cents in the search response (list_price_cents), so divide by 100 to get dollar amounts.
The Opendoor API is a managed, monitored endpoint for Opendoor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when Opendoor.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official Opendoor.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a market dashboard showing available Opendoor listings by city with price and bed/bath breakdowns
- Aggregate listing counts and median prices across multiple Opendoor markets for investment research
- Display property detail cards with photos, coordinates, and school ratings inside a real estate app
- Sync Opendoor inventory into a CRM or internal database for buyer-facing agents
- Plot active Opendoor listings on a map using the latitude and longitude fields from get_property_details
- Filter listings by price band and bedroom count to match buyer profiles in an automated recommendation tool
- Monitor listing freshness by tracking newest listing dates returned by search_listings across target markets
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.