Landwatch.com Scraper | Enterprise Grade
Pricing
from $0.70 / 1,000 results
Landwatch.com Scraper | Enterprise Grade
Extract 400k+ US property listings from LandWatch with pricing, property details, broker contacts, full media, listing history and more. Built for enterprise-grade land intelligence, investment screening, lead enrichment, and automated real estate data pipelines.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
LandWatch.com Scraper
Slug: fatihtahta/lanswatch-com-scraper
Overview
LandWatch.com Scraper collects structured public real estate listing data from LandWatch, including listing identity, title, description, pricing, acreage, residential attributes, location, broker details, media, features, listing history, and related listing context. LandWatch is a public marketplace for land, acreage, farms, ranches, homesites, recreational property, and other rural real estate, making its listings useful for market research, lead qualification, investment screening, and inventory monitoring. The actor converts search and filter configurations into repeatable dataset outputs that are easier to analyze than manual browsing. It is designed for automated, recurring data acquisition where consistent JSON records, predictable limits, and operational review matter. Use it to support dependable collection workflows without assuming that every listing, field, or source-side attribute will be available in every run.
Why Use This Actor
- Market research and analytics teams: build market intelligence datasets for supply, price, acreage, property-type mix, broker activity, and regional inventory trends.
- Product and content teams: populate internal directories, comparison experiences, editorial research, or property discovery workflows with normalized listing data.
- Developers and data engineering teams: feed structured extraction results into downstream systems, ETL jobs, warehouses, enrichment pipelines, and operational reporting.
- Lead generation and enrichment teams: identify public broker, seller, and property attributes that can support qualification, segmentation, and CRM enrichment.
- Monitoring and competitive tracking teams: schedule repeatable collection to detect changes in pricing, availability, listing updates, and market movement over time.
Common Use Cases
- Market intelligence: monitor land supply, pricing, price-per-acre movement, acreage bands, listing availability, and geographic coverage.
- Lead generation: build targeted prospect lists from public land, farm, ranch, residential, and broker listing data.
- Competitive monitoring: track changes in listings, pricing, property categories, broker inventory, and recently updated records.
- Catalog and directory building: populate internal real estate databases with structured public listing records.
- Data enrichment: add current public property, location, broker, media, and feature attributes to CRM, BI, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, market summaries, and trend analysis.
Quick Start
- Choose the listing scope with
deal_typeandavailability. - Add a
location,property_type, keyword, pricing, acreage, timing, or feature filters when you need a narrower dataset. - Set a small
limit, such as 25 or 50, for the first validation run. - Run the actor in Apify Console.
- Inspect the first dataset records to confirm that the output shape and field coverage match your use case.
- Increase coverage, adjust filters, enable scheduling, or use
maximize_coverageandenrich_dataonce the output is verified.
Input Parameters
This actor accepts LandWatch search scope, location, property, timing, feature, price, acreage, building, bedroom, bathroom, sorting, limit, coverage, and enrichment controls.
| Parameter | Type | Description | Default |
|---|---|---|---|
deal_type | string | Listing deal type. Allowed values: for_sale, auction. Leave empty to avoid limiting by deal type. | – |
availability | array of strings | Listing statuses to include. Allowed values: buy, under_contract, off_market, sold. | ["buy", "under_contract"] |
location | string | Free-text location such as California, Los Angeles County CA, or Ramona CA. | – |
property_type | string | Property category. Allowed values: commercial, farms_and_ranches, homesite, horse, house, hunting, lakefront, oceanfront, recreational, riverfront, timberland, undeveloped, waterfront. | – |
price_reduction_period | string | Only include listings with a price reduction in the selected window. Allowed values: 3_days, 7_days, 30_days, 60_days, 90_days. | – |
publication_date | string | Only include listings first published in the selected window. Allowed values: 1_day, 7_days, 30_days, 60_days. | – |
keyword | string | Keyword or phrase used to focus matching listings. | – |
owner_financing | boolean | Include only listings that offer owner financing. | false |
mineral_rights | boolean | Include only listings that mention mineral rights. | false |
virtual_tour | boolean | Include only listings that provide a virtual tour. | false |
exterior_tour | boolean | Include only listings that provide an exterior tour. | false |
property_video | boolean | Include only listings that provide a property video. | false |
custom_map | boolean | Include only listings that provide a custom map. | false |
min_price | integer | Minimum listing price in USD. Must be 0 or greater. | – |
max_price | integer | Maximum listing price in USD. Must be 0 or greater. | – |
min_area_parcel | number | Minimum parcel size in acres. Must be 0 or greater. | – |
max_area_parcel | number | Maximum parcel size in acres. Must be 0 or greater. | – |
min_area_building | number | Minimum building size in square feet. Must be 0 or greater. | – |
max_area_building | number | Maximum building size in square feet. Must be 0 or greater. | – |
min_bedroom | integer | Minimum number of bedrooms. Must be 0 or greater. | – |
max_bedroom | integer | Maximum number of bedrooms. Must be 0 or greater. | – |
min_bathroom | integer | Minimum number of bathrooms. Must be 0 or greater. | – |
max_bathroom | integer | Maximum number of bathrooms. Must be 0 or greater. | – |
sort_by | string | Result order. Allowed values: default, acres_small_to_large, acres_large_to_small, newest, price_low_to_high, price_high_to_low, price_per_acre_low_to_high, price_per_acre_high_to_low, recently_changed. | default |
limit | integer | Maximum number of listings to save for each location. Must be 1 or greater. Leave empty to collect all available matching listings. | – |
maximize_coverage | boolean | Collect a broader set of matching listings for production-style runs. Disable for faster exploratory runs. | true |
enrich_data | boolean | Include richer listing details such as descriptions, parcel identifiers, amenities, listing history, media, and broker contact details when available. | true |
Choosing Inputs
Use location when you need a state, county, city, or local-market view. Add property_type, price, parcel acreage, building size, bedroom, bathroom, feature, and timing filters when the goal is a targeted dataset; leave optional filters empty when the goal is broader discovery. Narrower filters produce cleaner, more focused output, while broader filters improve coverage and are better for exploratory market analysis. Use publication_date, price_reduction_period, and sort_by for monitoring workflows where freshness, recent changes, or ordered review matters. Start with a small limit to validate record shape and field coverage, then increase the limit or enable broader collection once the output is ready for downstream use.
Example Inputs
Location and category validation run
{"deal_type": "for_sale","availability": ["buy", "under_contract"],"location": "Bland County VA","property_type": "farms_and_ranches","sort_by": "newest","limit": 25,"enrich_data": true}
Recently changed price monitoring
{"availability": ["buy"],"location": "Virginia","price_reduction_period": "30_days","min_price": 100000,"max_price": 750000,"sort_by": "recently_changed","limit": 100}
Broad discovery with conservative output
{"deal_type": "for_sale","availability": ["buy"],"keyword": "waterfront","min_area_parcel": 10,"property_type": "waterfront","limit": 50,"maximize_coverage": true,"enrich_data": false}
Output
Output destination
The actor writes results to the default Apify dataset as normalized JSON records. The public dataset currently uses one record family: property_listing.
Record envelope and stable identifiers
Each record uses record_type as the discriminator and record_id as the recommended primary idempotency key. Use source_context.fingerprint as a compact change-detection value when comparing repeated runs, and keep source_context.external_ids for source-specific joins.
Example
Example: LandWatch property listing record
{"record_type": "property_listing","record_id": 417486633,"source_context": {"source_url": "https://www.landwatch.com/api/property/search/1113/california-land-for-sale/for-sale","seed_id": "fd8c31faa63e","seed_type": "url","seed_value": "https://www.landwatch.com/api/property/search/1113/california-land-for-sale/for-sale","page_index": 0,"domain": "www.landwatch.com","external_ids": {"landwatch_property_id": 417486633,"listing_id": 18080155,"parcel_id": "0|225|2861115000|1"},"fingerprint": "42ca83d6b06e1df20e9a"},"entity": {"title": "Ballena Vista Farm","description": "Discover Ballena Vista Farm: Where Legacy, Luxury and Lifestyle Converge.","url": "https://www.landwatch.com/san-diego-county-california-farms-and-ranches-for-sale/pid/417486633"},"listing": {"listing_id": 18080155,"listing_date": "2023-08-27","parcel_id": "0|225|2861115000|1","external_url": "https://donn.com/listings/ballena-vista-farm/","updated_at": "February 22, 2026 at 10:44 AM"},"pricing": {"price": 12900000.0,"price_text": "$12,900,000","price_per_acre": 75882.35},"location": {"address": "26353 Old Julian Highway","city": "Ramona","county": "San Diego County","state": "California","state_code": "CA","postal_code": "92065","coordinates": {"latitude": 33.05823,"longitude": -116.75506},"geocode_accuracy": 9},"property": {"acres": 170.0,"acres_text": "170 acres","beds": 5,"beds_text": "5 beds","baths": 4,"baths_text": "4 baths","home_sqft": 6169,"home_sqft_text": "6,169 sqft","types": ["Farms and Ranches", "Horse Property", "House"],"types_text": "Farms and Ranches, Horse Property, House"},"media": {"thumbnail_url": "https://assets.landwatch.com/resizedimages/394/0/h/80/5046472282","image_count": 49,"image_document_ids": [5046472282],"images": [{"document_id": 5046472282,"url": "https://assets.landwatch.com/resizedimages/394/0/h/80/5046472282","image_id": 1485857478,"label": "8","width": 1920,"height": 1280}]},"contact_details": {"broker_name": "Donn Bree & Meriah Druliner","broker_company": "Red Hawk Realty","phone": "(800) 371-6669","profile_url": "https://www.landwatch.com/profile/donn-bree-meriah-druliner/53052","website": "www.redhawkrealty.com/","city": "Santa Ysabel","state": "CA"},"metrics": {"image_count": 49},"attributes": {"features": {"amenities": ["Equestrian", "Vineyard", "Solar"]},"history": {"events": []},"map": {"static_map_url": "https://maps.googleapis.com/maps/api/staticmap?..."}}}
Field reference
record_type (string, required): Public dataset discriminator. Current value: property_listing.
record_id (integer or string, required): Stable LandWatch listing or property identifier and recommended primary upsert key.
source_context.source_url / detail_api_url / seed_id / seed_type / seed_value / page_index / domain (string or integer, optional): Source and seed context for tracing where the record came from.
source_context.external_ids (object, optional): Source-specific IDs such as landwatch_property_id, site_listing_id, listing_id, source_record_id, laf_property_id, account IDs, parcel ID, MLS ID, partner IDs, and participant keys.
source_context.breadcrumbs[] (array, optional): Source breadcrumb paths and location labels.
source_context.fingerprint (string, optional): Compact stable fingerprint for repeated-run change detection.
entity.title / description / url (string, optional): Human-facing listing title, public description, and listing URL.
listing (object, optional): Listing status, listing dates, update timestamps, parcel reference, external public URL, placement metadata, market status, and auction-specific fields when present.
pricing (object, optional): Price, display price, short price label, price per acre, recent price-change values, sales price, and sales date.
location (object, optional): Address, city, county, state, postal code, location IDs, region data, coordinates, geocode accuracy, county/city links, and nearby county context.
property (object, optional): Acreage, building size, bedroom and bathroom counts, property category labels and IDs, residential/irrigation/listing flags, executive summary, directions, disclaimer, highlights, and public category links.
media (object, optional): Thumbnail, image counts, image document IDs, image records, videos, virtual tours, third-party map links, Matterport/Vimeo/Kuula media, floorplans, attachments, and seller files.
contact_details (object, optional): Broker or seller name, company, phone values, profile URL, website, office location, license number, and public profile/logo document IDs.
relationships.broker (object, optional): Broker account metadata, active/certification flags, seller flag, account lifecycle dates, and SMS notification setting.
relationships.related_listings (object, optional): Related active or sold listing summaries with their own compact identity, pricing, property, location, broker, media, and listing metadata.
metrics (object, optional): Compact numeric signals such as image_count, price_change_amount, and price_change_percentage.
attributes (object, optional): LandWatch-specific listing flags, feature booleans, amenity groups, listing history, map overlays, SEO metadata, source schema objects, and finance-center details that do not belong in the shared real estate groups.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, session, availability, account visibility, listing type, source data quality, or UI experiments.
- Optional fields: null-check optional values in downstream code, especially
contact_details,media,attributes, andrelationships. - Deduplication: use
record_idas the strongest stable key available from the output, withentity.urlandsource_context.fingerprintas secondary checks. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one geography, property category, or market segment per run when you need cleaner segmentation.
- Leave optional filters empty when the goal is broad discovery.
- Add filters gradually to understand how each field changes coverage.
- Use
publication_date,price_reduction_period, andsort_byfor monitoring newly published or recently changed listings. - Schedule recurring runs for monitoring workflows instead of relying on manual one-off collection.
- Store records by
record_idand comparesource_context.fingerprintwhen tracking changes over time.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure the available input fields for the target scope.
- Set the maximum number of outputs to collect with
limit. - Click Start and wait for the run to finish.
- Inspect the dataset preview.
- Download results in JSON, CSV, Excel, or another supported format.
Scheduling & Automation
Scheduling
Automated Data Collection
Schedule recurring runs to keep LandWatch listing datasets fresh for monitoring, reporting, and enrichment workflows. Use the same validated input configuration for consistent collection over time.
- Navigate to Schedules in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- CRM enrichment: sync public listing, broker, location, acreage, and pricing attributes into account or lead records.
- BI dashboards: monitor pricing, availability, property-type movement, acreage bands, and geographic coverage over time.
- Data warehouses: retain historical listing snapshots for market intelligence, trend analysis, and operational reporting.
- Webhooks: trigger validation, notification, or ingestion workflows after each completed run.
- Google Sheets or Airtable: review smaller datasets, qualify leads, and coordinate lightweight market research workflows.
- Alerts: notify teams when new, recently changed, or price-reduced listings match a saved scope.
Export Formats And Downstream Use
Apify datasets can be exported or consumed by downstream systems for analysis, review, and operational use.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into internal systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
Estimated run times:
- Small runs (< 1,000 outputs): ~3-5 minutes
- Medium runs (1,000-5,000 outputs): ~5-15 minutes
- Large runs (5,000+ outputs): ~15-30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what LandWatch publicly exposes at run time.
- Some optional fields may be missing on sparse listings, regional pages, older records, or records with limited broker or media information.
- Very broad searches may take longer or require higher limits to collect the desired volume.
- Target-side changes can affect field availability, labels, or naming.
- Regional, account, or availability differences may change which records are visible for the same input scope.
- Listing freshness reflects the public source state at the time the actor runs.
Troubleshooting
- No results returned: check filters, location or category spelling, and whether LandWatch has matching public records for the selected scope.
- Fewer results than expected: broaden filters, raise
limit, or verify that the target contains enough matching records. - Some fields are empty: optional fields depend on what each record publicly provides.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller segments. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public LandWatch listing records, including listing identity, source context, public URLs, descriptions, pricing, acreage, property details, location, contact details, media, amenities, listing history, related listings, SEO metadata, and stable identifiers when available.
Can I filter by location, category, date, price, or other criteria?
Yes. The input schema supports location, property_type, publication_date, price_reduction_period, keyword search, feature flags, price range, parcel size, building size, bedroom and bathroom counts, availability, deal type, and sorting.
Why did I receive fewer results than my limit?
limit is a maximum, not a guarantee. The final count depends on how many public listings match the configured scope and filters at run time.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor daily, weekly, or with a custom cron expression for monitoring and reporting workflows.
How do I avoid duplicates across runs?
Use record_id as the primary idempotency key. You can also compare entity.url and source_context.fingerprint when detecting changes or validating repeated runs.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets support exports such as JSON, CSV, Excel, and other platform-supported formats.
Does this actor collect private data?
No. The actor is intended to collect publicly available listing information from LandWatch. Users are responsible for using the data lawfully and appropriately.
What should I include when reporting an issue?
Include the input used with sensitive values removed, the run ID, expected versus actual behavior, and a small output sample if it helps illustrate the problem.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available real estate listing information from https://www.landwatch.com for legitimate business purposes, including:
- Real estate and land market research and market analysis
- Lead qualification and enrichment for public property and broker records
- Inventory monitoring and reporting for pricing, availability, and regional trends
This section is informational and not legal advice. Users are responsible for ensuring that their collection, storage, and use of data comply with applicable laws, regulations, and contractual obligations.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site’s terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR and CCPA
Support
For help, use the actor page or Issues section. Include the input used with any sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample when it helps explain the issue. Avoid including private, confidential, or unnecessary personal data in support requests.