Trulia Scraper
Pricing
Pay per event
Trulia Scraper
🏠 Export public Trulia sale, rental, and sold listings with prices, addresses, coordinates, features, broker attribution, photos, and page provenance.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Export public Trulia property listings from sale, rental, and sold searches into clean JSON, CSV, Excel, XML, or RSS data.
Paste the filtered Trulia search URL you already use and receive structured prices, addresses, coordinates, beds, baths, square footage, listing status, broker attribution, freshness tags, photos, and page provenance.
No Trulia login is required.
What does Trulia Scraper do?
Trulia Scraper turns Trulia search-result pages into analysis-ready property records.
It can:
- 🏠 collect homes for sale;
- 🔑 collect properties for rent;
- 📈 collect recently sold properties;
- 🎛️ preserve the location and filters encoded in your Trulia URL;
- 📄 follow multiple result pages;
- 🔁 remove duplicate listings across pages and searches;
- 🖼️ export available card photos;
- 🧾 preserve broker, agent, provider, and source attribution;
- 🕐 add scrape timestamps and page provenance for monitoring.
The Actor uses an HTTP-first extraction route and automatically manages the US residential proxy sessions needed by Trulia.
Who is Trulia Scraper for?
Real-estate investors
Build candidate lists for a buy box, compare asking prices, and monitor fresh listings in target markets.
Agents and brokerages
Export filtered market inventory, review competing listings, and feed internal prospecting or market-report workflows.
Proptech and data teams
Collect normalized property records for dashboards, enrichment pipelines, quality checks, and source comparison.
Market researchers
Create repeatable snapshots of rental, sale, or sold inventory with numeric fields suitable for analysis.
Lead and data vendors
Produce source-attributed listing feeds for approved downstream workflows without manually copying search cards.
Why use this Trulia listing extractor?
Manual copying is slow and loses context. This Actor keeps stable IDs, both formatted and numeric values, and the URL that produced each record.
Key benefits include:
- ✅ one input for sale, rental, and sold search URLs;
- ✅ useful typed fields rather than raw HTML;
- ✅ automatic pagination with explicit limits;
- ✅ deduplication by ZPID or listing identity;
- ✅ conservative retry behavior for blocked sessions;
- ✅ standard Apify exports and integrations;
- ✅ pay-per-result billing rather than a monthly subscription.
What Trulia data can I extract?
| Field | Description |
|---|---|
recordId | Stable normalized property/listing identity |
zpid | Zillow property ID when Trulia provides it |
listingId | Trulia listing ID |
providerListingId | Provider or builder listing ID when available |
url | Canonical Trulia property URL |
status | For sale, for rent, sold, or another reported status |
listingType | Resale, new home, rental, or another listing classification |
propertyType | Single-family home, condo, townhouse, and similar types |
address | Full formatted address |
city, state, zipCode | Parsed location components |
latitude, longitude | Map coordinates |
price, priceMax | Exact price or numeric minimum/maximum for rental ranges |
formattedPrice | Display price such as $725,000 or $2,583 - $4,757/mo |
beds, bedsMax | Exact beds or numeric minimum/maximum |
baths, bathsMax | Exact baths or numeric minimum/maximum |
sqft, sqftMax | Exact area or numeric minimum/maximum |
lotSize | Formatted lot dimension when available |
tags | Freshness and listing labels |
dateListed | Listing date when present |
broker, agent, provider | Source attribution |
photos | Available listing-card photo URLs |
sourceUrl | Input search URL that produced the record |
fetchedPage | Result page number |
scrapedAt | UTC extraction timestamp |
Some fields can be null because Trulia does not show every value on every search card.
How to scrape Trulia listings
- Open Trulia and create a sale, rental, or sold search.
- Apply your desired location and filters.
- Copy the resulting Trulia URL.
- Open Trulia Scraper on Apify.
- Paste the URL into Trulia search URLs.
- Choose a small maximum listing count for your first run.
- Click Start.
- Preview the dataset and export it in your preferred format.
For recurring monitoring, save the Actor input as an Apify task and schedule that task.
Input
A minimal input looks like this:
{"startUrls": [{ "url": "https://www.trulia.com/for_sale/Austin,TX/" }],"maxItems": 20,"maxPages": 2}
Input fields
| Input | Type | Default | Purpose |
|---|---|---|---|
startUrls | array | required | Public Trulia sale, rental, or sold search URLs |
maxItems | integer | 20 | Global maximum unique listings |
maxPages | integer | 5 | Maximum result pages per URL |
maxRequestRetries | integer | 5 | Fresh sessions tried after a block or network error |
The Actor rejects non-Trulia hosts and Trulia property-detail URLs. Configure your filters on a Trulia search and paste that search URL.
Search URL examples
Homes for sale
https://www.trulia.com/for_sale/Austin,TX/
Rentals
https://www.trulia.com/for_rent/Austin,TX/
Sold properties
https://www.trulia.com/sold/Austin,TX/
Trulia may redirect these friendly routes to a canonical location route. The Actor follows that redirect and uses the canonical route for pagination.
Output example
{"recordId": "29476130","zpid": "29476130","listingId": "7029476130","url": "https://www.trulia.com/home/example-29476130","status": "for sale","listingType": "resale","propertyType": "single-family home","address": "7607 Williamson Creek Dr, Austin, TX 78736","city": "Austin","state": "TX","zipCode": "78736","latitude": 30.246248,"longitude": -97.915215,"price": 275000,"formattedPrice": "$275,000","currency": "USD","beds": 3,"baths": 1,"sqft": 1026,"formattedSqft": "1,026 sqft","tags": ["NEW - 1 MIN AGO", "0.9 ACRES"],"broker": "Texas Income Property","photoCount": 15,"sourceUrl": "https://www.trulia.com/for_sale/Austin,TX/","fetchedPage": 1,"scrapedAt": "2026-07-17T17:34:20.696Z"}
Values change as Trulia listings change. The example shows the shape, not a promise that the property remains active.
How much does it cost to scrape Trulia listings?
Trulia Scraper uses pay-per-event pricing:
- a small one-time fee when a run starts;
- a tiered fee for each unique listing saved to the dataset.
The formula-derived BRONZE rate is $0.00037705 per listing, or about $0.38 per 1,000 listings, plus the run-start fee. Higher Apify plans receive lower per-listing rates.
The final charge depends on the number of records produced. Set maxItems to control scope and cost.
Pagination and result limits
Trulia usually exposes up to 40 search cards per result page.
maxItems is a global cap across every input URL. maxPages is applied separately to each URL.
For example:
{"startUrls": [{ "url": "https://www.trulia.com/for_sale/Austin,TX/" },{ "url": "https://www.trulia.com/for_sale/Dallas,TX/" }],"maxItems": 100,"maxPages": 3}
The Actor stops as soon as it reaches 100 unique listings, even if more pages remain.
Filtering Trulia searches
The Actor preserves filters encoded in the supplied URL. This keeps its input simple and aligned with Trulia's own search controls.
Useful filter workflows include:
- location or ZIP code;
- sale, rent, or sold status;
- minimum and maximum price;
- bedrooms and bathrooms;
- property type;
- square footage;
- open houses or listing freshness, when Trulia exposes those controls.
Always verify the filtered result page in your browser before copying its URL.
Monitoring new listings and price changes
Run the same search on a schedule and compare records by recordId or zpid.
A practical monitoring pipeline is:
- create an Apify task with a stable filtered URL;
- schedule it hourly or daily;
- send dataset items to a webhook, database, or automation platform;
- compare
price,status, andtagswith the previous snapshot; - alert only when a tracked value changes.
The sourceUrl, fetchedPage, and scrapedAt fields make each observation auditable.
Integrations
Google Sheets
Use the Apify Google Sheets integration to append new listing records to a market tracker.
Webhooks
Trigger a webhook when a run succeeds, then pull dataset items into your data pipeline.
Zapier and Make
Create workflows that route matching listings to Slack, email, a CRM, or a review queue.
Databases and warehouses
Export JSON or CSV to PostgreSQL, BigQuery, Snowflake, object storage, or your preferred ELT process.
Scheduled tasks
Turn a tested input into an Apify task and schedule it for repeatable inventory snapshots.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/trulia-scraper').call({startUrls: [{ url: 'https://www.trulia.com/for_sale/Austin,TX/' }],maxItems: 20,maxPages: 2,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/trulia-scraper").call(run_input={"startUrls": [{"url": "https://www.trulia.com/for_rent/Austin,TX/"}],"maxItems": 20,"maxPages": 2,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~trulia-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.trulia.com/sold/Austin,TX/"}],"maxItems": 20,"maxPages": 2}'
Use the returned run ID to inspect status and retrieve the default dataset.
Use Trulia Scraper with MCP
Connect Apify's MCP server to Claude Code or another compatible client:
$claude mcp add --transport http apify https://mcp.apify.com/?tools=automation-lab/trulia-scraper
Claude Desktop setup
Use this Claude Desktop configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/trulia-scraper"}}}
Cursor setup
Add the same MCP URL in Cursor → Settings → MCP and name the server apify.
VS Code setup
Add the Apify MCP URL to your VS Code MCP server configuration, then enable the automation-lab/trulia-scraper tool.
Example prompts:
- “Run the Trulia scraper for this Austin rental search and return 20 listings.”
- “Export the sale listings, then group them by property type.”
- “Compare prices from today's dataset with yesterday's IDs.”
Data quality tips
- Start with one verified URL and a low
maxItemsvalue. - Keep
maxPagesproportionate to the expected market size. - Use
recordIdorzpidfor deduplication across runs. - Prefer numeric fields for calculations and formatted fields for reports.
- Treat
nullas “not shown on the search card,” not as zero. - For rental-community ranges, use the base numeric field as the minimum and the corresponding
Maxfield as the upper bound. - Preserve
brokerandproviderattribution in downstream products. - Review records after changing Trulia filters.
Reliability and anti-bot handling
Trulia protects result pages with PerimeterX.
The Actor automatically uses US residential sessions, browser-like HTTP fingerprints, challenge detection, and bounded session rotation. It does not ask users to provide cookies or solve CAPTCHAs.
A temporary shortage of usable sessions can still cause a run to fail. Retry the run later rather than setting unlimited retries. Bounded failure is safer and makes missing output visible.
Limitations
- The initial release extracts search-result cards, not full property-detail pages.
- Neighborhood amenities, schools, demographics, tax history, and contact details are not enriched.
- Field availability depends on listing type and what Trulia displays.
- Trulia can change payloads, URL routes, filters, or anti-bot behavior.
- Search totals can change while pagination is in progress.
- The Actor supports public US Trulia search pages only.
- Results are not an MLS feed and should not be represented as one.
Legal and responsible use
Trulia Scraper extracts publicly visible listing information.
You are responsible for using the data lawfully and for complying with applicable website terms, database rights, privacy rules, fair-housing requirements, MLS attribution rules, and downstream licensing obligations.
Do not use the Actor to access private accounts, contact people unlawfully, discriminate, or make regulated decisions without appropriate review. Avoid collecting more data than your legitimate workflow needs.
Troubleshooting
Why did my run reject the URL?
The Actor accepts only public trulia.com search-result URLs. A property detail URL under /home/, a shortened URL, or another domain fails closed. Open a search page and copy its URL instead.
Why did the run fail after several retries?
Trulia may have challenged every residential session sampled during that run. Wait briefly and retry. If the problem persists, check the Actor run log for HTTP status and payload errors.
Why are some fields null?
Trulia search cards do not show every field for every listing. For example, sold cards, land, new construction, and rentals can have different field availability.
Why are fewer records returned than maxItems?
The filtered search may contain fewer listings, maxPages may be too low, or the source may have returned duplicates. Increase page depth only when Trulia shows more pages.
FAQ
Does Trulia Scraper require a Trulia account?
No. It covers public search pages and does not use saved homes, messaging, or private account data.
Can it scrape rentals and sold homes?
Yes. Supply the corresponding public Trulia rental or sold search URL.
Can I paste multiple searches?
Yes. Add multiple entries to startUrls. The global maxItems limit applies across all of them.
Does it download image files?
No. It exports the photo URLs exposed in each search card, keeping runs faster and datasets lightweight.
Can it scrape property details?
Not in the initial release. The Actor focuses on reliable search exports. Use the listing URL as a key for a separately authorized enrichment workflow.
How often should I run a monitor?
Choose a schedule that matches your use case and source freshness. Daily runs suit many market snapshots; high-priority new-listing workflows may run more frequently.
Related real-estate scrapers
Expand source coverage with other Automation Lab Actors:
- Zillow Scraper for Zillow search and property data;
- Realtor.com Scraper for Realtor.com listings;
- Redfin Scraper for Redfin market data.
Use separate source IDs and attribution when combining datasets.
Start exporting Trulia listings
Open a filtered Trulia search, copy its URL, keep the first run small, and start the Actor.
Your result appears in the default dataset and can be previewed, downloaded, scheduled, or sent to another service through the Apify platform.