Propwire Scraper avatar

Propwire Scraper

Pricing

Pay per event

Go to Apify Store
Propwire Scraper

Propwire Scraper

Export filtered public PropWire property leads with addresses, values, equity, property facts, sale data, and motivated-seller flags for acquisition prospecting.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Build repeatable real-estate acquisition prospect lists from public PropWire searches.

Propwire Scraper accepts the filtered URL you create on PropWire and exports one structured row per property. Each row includes its address, property facts, estimated value and equity, sale data, and active motivated-seller or ownership flags. It is designed for investors, wholesalers, acquisition teams, analysts, and automation builders who need a reusable PropWire data export instead of manual copying.

The Actor works with public search results and does not require a PropWire login. It preserves the filters encoded in your URL, paginates the matching results, and deduplicates properties by PropWire ID.

What can you do with PropWire property leads?

  • Build city- or state-specific acquisition lists.
  • Export absentee-owner, high-equity, preforeclosure, and other supported lead segments.
  • Refresh the same filtered list on a schedule.
  • Compare dataset snapshots to identify newly visible properties.
  • Send structured prospects to a spreadsheet, CRM staging table, warehouse, or scoring model.
  • Combine estimated value, equity, property type, and sale history in a screening workflow.
  • Replace a manual PropWire search-and-copy step with an API-callable Actor.

Who is this Propwire scraper for?

Real-estate investors can export targeted public property searches for underwriting and outreach preparation.

Wholesalers and acquisition teams can create consistent lead batches around geography, equity, ownership, or distress criteria.

Analysts can aggregate property types, estimated values, equity bands, and lead flags from a defined market search.

Automation builders can run the same input through the Apify API, schedules, webhooks, Make, Zapier, n8n, or MCP.

Data teams can ingest stable typed fields rather than parsing a visual app page.

How the extraction works

  1. You build a search on propwire.com.
  2. PropWire stores the selected criteria in the URL's filters parameter.
  3. The Actor opens that search in a coherent browser and proxy session.
  4. It captures PropWire's public search response.
  5. It requests additional result pages in the same session until maxItems is reached or results end.
  6. It normalizes the records and deduplicates them by PropWire property ID.
  7. It saves accepted properties to the default Apify dataset.

The browser is required because PropWire protects page and API access with session and browser checks. Images, fonts, and media are blocked to reduce transfer without removing property data.

Data extracted

FieldDescription
propertyIdStable PropWire property identifier
sourceUrlFiltered search URL that produced the row
propertyUrlPropWire property URL
fullAddressCombined public property address
addressStreet, city, state, and ZIP components
propertyTypePropWire property type code
bedrooms / bathroomsPublic room counts when available
yearBuiltConstruction year when available
buildingAreaSqFtBuilding area in square feet
livingAreaSqFtLiving area in square feet
lotSizeSqFtLot area in square feet
estimatedValuePropWire estimated value in USD
estimatedEquityPropWire estimated equity in USD
estimatedEquityPercentPropWire estimated equity percentage
lastSoldPriceMost recent recorded sale price
lastSoldDateMost recent recorded sale date
ownerNameOwner name when included in the public search response
activeLeadTypesActive lead and ownership flags
scrapedAtUTC collection timestamp

Fields can be null when PropWire does not provide the value in its public search response. The Actor does not invent or infer missing values.

Supported PropWire filters

The Actor preserves filters that PropWire itself places in a valid search URL. Examples include:

  • city and state locations;
  • multiple states;
  • property types;
  • lead types;
  • estimated value ranges;
  • estimated equity percentages;
  • other criteria supported by the current PropWire search interface.

Create complex filters in PropWire rather than hand-editing encoded JSON. This keeps your input aligned with the source's current filter vocabulary.

Getting started

  1. Open PropWire in your browser.
  2. Go to property search.
  3. Select a real location and any desired property, equity, value, or lead filters.
  4. Copy the complete URL beginning with https://propwire.com/search?filters=.
  5. Paste it into PropWire search URLs.
  6. Set Maximum properties.
  7. Leave Apify Proxy enabled unless you have a tested custom proxy.
  8. Start the Actor.
  9. Open the Property leads dataset view.
  10. Download JSON, CSV, Excel, XML, or RSS, or consume the dataset through the API.

The prefilled Chicago Heights input is a working search and is suitable for a quick first run.

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayYesWorking exampleComplete PropWire /search?filters=... URLs
maxItemsintegerNo100Maximum unique properties across all URLs; 1–10,000
proxyConfigurationobjectNoApify ProxyBrowser-session proxy configuration

Duplicate properties found through multiple URLs are emitted once per run. The first matching source URL remains in sourceUrl.

Example input

{
"startUrls": [
{
"url": "https://propwire.com/search?filters=%7B%22locations%22%3A%5B%7B%22searchType%22%3A%22C%22%2C%22city%22%3A%22Chicago%20Heights%22%2C%22state%22%3A%22IL%22%2C%22title%22%3A%22Chicago%20Heights%2C%20IL%22%7D%5D%7D"
}
],
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output example

The following shortened record reflects the current output shape; example values are anonymized.

{
"propertyId": 123456,
"sourceUrl": "https://propwire.com/search?filters=...",
"propertyUrl": "https://propwire.com/realestate/property/123456",
"fullAddress": "100 Sample Ave, Example City, IL, 60000",
"address": {
"address": "100 Sample Ave",
"city": "Example City",
"state": "IL",
"zip": "60000"
},
"propertyType": "SFR",
"bedrooms": 3,
"bathrooms": 2,
"yearBuilt": 1985,
"buildingAreaSqFt": 1750,
"livingAreaSqFt": 1600,
"lotSizeSqFt": 7200,
"estimatedValue": 245000,
"estimatedEquity": 147000,
"estimatedEquityPercent": 60,
"lastSoldPrice": 180000,
"lastSoldDate": "2023-05-15",
"ownerName": null,
"activeLeadTypes": ["absentee_owner", "high_equity"],
"scrapedAt": "2026-01-15T12:00:00.000Z"
}

How much does it cost to export PropWire property leads?

The Actor uses pay-per-event pricing:

  • a $0.005 start fee for each run;
  • one Property lead event for each unique dataset row.

Current per-property tiers are:

PlanPrice per property
Free$0.000874
Bronze$0.000760
Silver$0.0005928
Gold$0.000456
Platinum$0.000304
Diamond$0.0002128

At the Free-tier event price, 100 properties cost about $0.09 including the start fee, 1,000 cost about $0.88, and 10,000 cost about $8.75. Your plan tier determines the final event amount. Apify platform usage is handled according to the pricing shown in Console. No event is charged for rejected, duplicate, or failed rows.

Scheduling recurring pipeline refreshes

Create an Apify schedule with the same filtered search URL to refresh an acquisition list daily, weekly, or monthly. Keep each run's dataset as a dated snapshot. Then compare stable propertyId values between runs:

  • IDs present only in the latest run are newly visible for that filter.
  • IDs no longer present have left the current result set.
  • Existing IDs can be compared for changed value, equity, sale, or lead flags.

The Actor returns snapshots; it does not itself send alerts or persist cross-run change state. Use schedules, webhooks, and your destination system for that workflow.

Export to spreadsheets and CRMs

From the dataset page, download CSV or Excel for spreadsheet review. For repeated automation, use a webhook or integration to move accepted rows into:

  • Google Sheets or Microsoft Excel;
  • Airtable;
  • a CRM staging table;
  • Snowflake, BigQuery, or PostgreSQL;
  • Make, Zapier, or n8n;
  • an internal lead-scoring service.

Use propertyId as the source key when upserting records. Use sourceUrl to preserve the acquisition segment that produced each row.

Run through the Apify API

Set APIFY_TOKEN in your environment. Do not commit tokens to source control.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~propwire-property-leads-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{"url": "https://propwire.com/search?filters=YOUR_ENCODED_FILTERS"}],
"maxItems": 100
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/propwire-property-leads-scraper').call({
startUrls: [{ url: 'https://propwire.com/search?filters=YOUR_ENCODED_FILTERS' }],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/propwire-property-leads-scraper').call(run_input={
'startUrls': [{'url': 'https://propwire.com/search?filters=YOUR_ENCODED_FILTERS'}],
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use Propwire Scraper with MCP and AI agents

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/propwire-property-leads-scraper"

Claude Desktop setup

Add this server object to the Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/propwire-property-leads-scraper"
}
}
}

Cursor setup

Add the same apify server object under mcpServers in Cursor's MCP settings, then reload the available tools.

VS Code setup

Add the same HTTP MCP URL to your VS Code MCP configuration and enable the automation-lab/propwire-property-leads-scraper tool.

Example prompts:

  • "Run the Propwire scraper for this Chicago Heights search URL and return 50 properties grouped by active lead type."
  • "Export this high-equity PropWire search, then summarize estimated value and equity bands."
  • "Run my saved Southeast preforeclosure search input and prepare the dataset for CRM import."

An AI agent should not make outreach or investment decisions solely from these records. Review source data and apply your own compliance and underwriting checks.

Reliability, retries, and proxy behavior

PropWire requires a coherent session across browser bootstrap and paginated requests. The Actor keeps cookies, XSRF state, browser fingerprint, and proxy identity together. It retries failed session bootstrap with a fresh page up to three times.

The default Apify datacenter proxy route was verified during implementation. A US residential proxy route was also verified for bootstrap but is not an automatic fallback. This avoids silently moving users to a higher-cost proxy path.

A challenge page, malformed response, or exhausted retry fails the run with a non-zero status. It is not reported as a successful empty search.

Limits and important behavior

  • Only https://propwire.com/search?filters=... inputs are accepted.
  • At least one location must exist in each encoded filter object.
  • The run limit is 10,000 unique properties.
  • Public source fields can be absent or null.
  • Owner names are returned only when included in the anonymous public search response.
  • Contact enrichment and skip tracing are not provided.
  • Property detail pages are not fetched in this version.
  • Results reflect PropWire at collection time and can change later.
  • Source UI or anti-bot changes may require an Actor update.
  • Large runs take longer because the source is paginated in a browser session.

Responsible use and legality

Use this Actor only for lawful purposes and data you are permitted to process. Follow PropWire's terms, Apify's terms, applicable privacy laws, consumer-protection rules, and rules governing real-estate marketing and outreach.

Property and ownership data can be inaccurate, incomplete, delayed, or associated with people who should not be contacted. Do not use the output for discriminatory housing decisions, harassment, eligibility decisions, or automated decisions with legal or similarly significant effects. Verify critical facts against authoritative records before acting. Honor suppression lists, consent requirements, and do-not-call rules in downstream outreach.

Troubleshooting

Why does my input fail immediately?

Confirm that the URL uses the propwire.com hostname, the /search path, and a valid JSON-encoded filters parameter with at least one location. The easiest fix is to rebuild the search in PropWire and copy the full address-bar URL.

Why did the run fail instead of returning zero rows?

The Actor fails when it sees a challenge, invalid response, or expired session after bounded retries. This prevents upstream blocking from being mistaken for a legitimate empty market. Retry later or test another permitted proxy configuration.

Why is ownerName null?

The anonymous search response does not expose an owner name for every property. The Actor preserves null rather than guessing or making a separately billed detail request.

Why are fewer rows returned than maxItems?

The filtered search may have ended, several searches may overlap, or duplicate PropWire IDs may have been removed. Only unique accepted records are charged and saved.

Frequently asked questions

Is this a PropWire API?

It provides an API-callable export workflow through Apify, but it is not an official PropWire API and is not affiliated with PropWire. It reads the same public search data used by the website.

Do I need a PropWire login or app session?

No. The supported workflow uses anonymous public search data. The Actor does not accept or store PropWire credentials.

Can I use multiple searches in one run?

Yes. Add several complete search URLs to startUrls. The Actor processes them in order and deduplicates properties by ID.

Can it find new or changed leads?

Each run is a current snapshot. Schedule repeated runs and compare datasets in your own workflow to detect new, removed, or changed rows.

Does it include phone numbers or email addresses?

No. It does not perform skip tracing or contact enrichment.

Can I export more than 10,000 properties?

The current per-run maximum is 10,000. Use narrower market segments or separate legitimate searches when you need bounded, reviewable batches.

These Actors cover different sources and record types; they do not merge automatically with PropWire output.

Support

If a run fails, share the Apify run URL and a sanitized input URL through the Actor's support tab. Do not post API tokens, private proxy credentials, or personal outreach lists. Include whether the input works in PropWire and whether the failure is consistent or intermittent.