Landwatch.com Scraper | Enterprise Grade avatar

Landwatch.com Scraper | Enterprise Grade

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Landwatch.com Scraper | Enterprise Grade

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

Fatih Tahta

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

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

  1. Choose the listing scope with deal_type and availability.
  2. Add a location, property_type, keyword, pricing, acreage, timing, or feature filters when you need a narrower dataset.
  3. Set a small limit, such as 25 or 50, for the first validation run.
  4. Run the actor in Apify Console.
  5. Inspect the first dataset records to confirm that the output shape and field coverage match your use case.
  6. Increase coverage, adjust filters, enable scheduling, or use maximize_coverage and enrich_data once 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.

ParameterTypeDescriptionDefault
deal_typestringListing deal type. Allowed values: for_sale, auction. Leave empty to avoid limiting by deal type.
availabilityarray of stringsListing statuses to include. Allowed values: buy, under_contract, off_market, sold.["buy", "under_contract"]
locationstringFree-text location such as California, Los Angeles County CA, or Ramona CA.
property_typestringProperty category. Allowed values: commercial, farms_and_ranches, homesite, horse, house, hunting, lakefront, oceanfront, recreational, riverfront, timberland, undeveloped, waterfront.
price_reduction_periodstringOnly include listings with a price reduction in the selected window. Allowed values: 3_days, 7_days, 30_days, 60_days, 90_days.
publication_datestringOnly include listings first published in the selected window. Allowed values: 1_day, 7_days, 30_days, 60_days.
keywordstringKeyword or phrase used to focus matching listings.
owner_financingbooleanInclude only listings that offer owner financing.false
mineral_rightsbooleanInclude only listings that mention mineral rights.false
virtual_tourbooleanInclude only listings that provide a virtual tour.false
exterior_tourbooleanInclude only listings that provide an exterior tour.false
property_videobooleanInclude only listings that provide a property video.false
custom_mapbooleanInclude only listings that provide a custom map.false
min_priceintegerMinimum listing price in USD. Must be 0 or greater.
max_priceintegerMaximum listing price in USD. Must be 0 or greater.
min_area_parcelnumberMinimum parcel size in acres. Must be 0 or greater.
max_area_parcelnumberMaximum parcel size in acres. Must be 0 or greater.
min_area_buildingnumberMinimum building size in square feet. Must be 0 or greater.
max_area_buildingnumberMaximum building size in square feet. Must be 0 or greater.
min_bedroomintegerMinimum number of bedrooms. Must be 0 or greater.
max_bedroomintegerMaximum number of bedrooms. Must be 0 or greater.
min_bathroomintegerMinimum number of bathrooms. Must be 0 or greater.
max_bathroomintegerMaximum number of bathrooms. Must be 0 or greater.
sort_bystringResult 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
limitintegerMaximum number of listings to save for each location. Must be 1 or greater. Leave empty to collect all available matching listings.
maximize_coveragebooleanCollect a broader set of matching listings for production-style runs. Disable for faster exploratory runs.true
enrich_databooleanInclude 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, and relationships.
  • Deduplication: use record_id as the strongest stable key available from the output, with entity.url and source_context.fingerprint as 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 limit to 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, and sort_by for 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_id and compare source_context.fingerprint when tracking changes over time.

How to Run on Apify

  1. Open the Actor in Apify Console.
  2. Configure the available input fields for the target scope.
  3. Set the maximum number of outputs to collect with limit.
  4. Click Start and wait for the run to finish.
  5. Inspect the dataset preview.
  6. 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 limit for 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.