Propwire Scraper icon

Propwire Scraper

Scrape Propwire.com: 157M+ US MLS & off-market properties with owner names, mailing addresses, equity, foreclosure and auction details, mortgages,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Propwire Scraper at a glance

Propwire Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes recordtype, id, propwireurl, address and city, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
25 options

Scrape Propwire.com: 157M+ US MLS & off-market properties with owner names, mailing addresses, equity, foreclosure and auction details, mortgages, transfers, owner portfolios, tax and full MLS records. Filter by lead type, property type, value, year built, sale date and MLS status.

What Propwire Scraper can do

  • Three ways to find properties. Address or APN lookup, pasted Propwire links (search or property pages), or a state/city/ZIP/county sweep with lead-type filters. No need to build search URLs by hand.
  • 41 built-in lead-type flags. Absentee owners, pre-foreclosures, high/low/negative equity, free and clear, auctions, bank-owned (REOs), vacant homes and lots, out-of-state owners, tired landlords, cash buyers, tax liens, tax dodgers, bankruptcies, divorces, pre-probates, zombie properties and more.
  • Full ownership and financial detail on demand. Owner names and mailing address, ownership length, owner portfolio (properties owned, portfolio value and equity), foreclosure and auction details, current mortgages, mortgage and transfer history, tax assessments and exemptions, parcel/zoning and building specifications.
  • Nothing dropped. The complete source payload for every record rides in raw, plus a stable Propwire link in propwireUrl, so no nested owner, portfolio or MLS object is ever whitelisted away.
  • Cost and size stay in your control. Max records is the single limit that stops a run, and Max pages per search is a separate runaway guard on any one search walk.
  • A refused run fails loudly instead of returning an empty dataset that looks like a successful scrape.

Choose what to collect

These inputs let you configure Propwire Scraper - Property Leads, Owners & Equity Data. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
addressesarrayFree-text street addresses or APN parcel numbers, one per line, e.g. 101 Crawfords Corner Rd, Holmdel, NJ 07733. Each is resolved through the site's own lookup and returns that property's full record. Leave empty unless you want address mode - any value here takes priority over links and the search filters below.
addressMatchModestringHow to handle addresses where the lookup returns several parcel matches (for example condos at one street address). First takes the top suggestion, exactly like clicking it on the site; all returns every match so you can deduplicate by APN afterwards.

Choices: first, all

startUrlsarraySearch links (https://propwire.com/search?filters=...) and property links (https://propwire.com/realestate/.../property-details) copied from propwire.com. A search link is walked forward page by page; a property link returns that one full record. Paste links copied straight from the site; links not on propwire.com are rejected with a loud error. Leave the field empty to use the address lookup above or the search filters below.
searchStatesarrayUS state codes to sweep state-wide, e.g. FL. Used only when addresses and links are empty. Keep the total geography small: the site itself answers at most 10 states per search, and very large sweeps stop serving results after the first 10,000 rows - split wide campaigns into several runs.
searchLocationsarrayNarrow the states above to specific places, one per line - city names (Orlando, FL), ZIP codes (32801) or counties (Orange County, FL). Each is resolved through the site's own location lookup; anything it cannot resolve is reported and skipped. Combined with the states field or usable on its own.
searchLeadTypesarrayOnly return properties carrying these motivated-seller flags. Values marked premium on the site may require a Propwire account and can come back empty.
searchPropertyTypesarrayRestrict the sweep to these property types.
Show 18 more inputs
More input fields
InputWhat it controls
searchEstimatedValueMinintegerOnly return properties estimated to be worth at least this much. Leave empty for no floor.
searchEstimatedValueMaxintegerOnly return properties estimated to be worth at most this much. Leave empty for no ceiling.
searchYearBuiltMinintegerOnly return properties built in or after this year. Leave empty for no limit.
searchYearBuiltMaxintegerOnly return properties built in or before this year. Leave empty for no limit.
searchSoldSincestringOnly return properties last sold on or after this date, in YYYY-MM-DD form. Leave empty for no limit.
searchOwnerTypearrayOnly return properties owned by individuals or by companies/llcs/trusts. Leave empty for both.
searchMlsStatusstringOnly return properties currently in this MLS state. Leave empty for all statuses.

Choices: active, pending, sold, failed

fetchDetailsbooleanRead each property's full record: owner names and mailing address, ownership length, owner portfolio, foreclosure and auction details, mortgage and transfer history, tax assessments, parcel/zoning, building specifications and the full MLS record when one exists. On by default - without it, records carry only the search-card fields (address, value, equity, beds/baths, size and MLS snapshot).
maxItemsintegerStop after this many property records across the whole run (default 1000, at most 1000000; 0 still means no limit for saved tasks). This is the limit that stops a run.
maxPagesintegerRunaway guard: an upper bound on how many result pages any single search walk may read. Leave 0 to go as deep as the source serves, with the record cap above as the only real limit.
resumeFromRunIdstringPaste the run id (or dataset id) of an earlier run of this Actor to continue it. Records that run already returned are skipped, so an interrupted large collection can finish without paying for the same rows twice. Leave empty for a normal run.
incrementalModebooleanTurn this on for daily or weekly lead monitoring. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED records, each labelled in a changeType column. What counts as a change: property fields (value, beds/baths, size, MLS price and status), equity, lead flags and owner detail drive UPDATED. What never counts: volatile bookkeeping is excluded by default (image URLs, scrapedAt, position and the source fields), and a lead that left the result set can be reported as EXPIRED. Leave off for a normal one-off run.
stateKeystringOptional. Name this monitoring campaign to keep its memory stable, or to deliberately share one memory across differently configured runs. Leave empty and the memory is keyed on the run setup automatically.
emitUnchangedbooleanOff by default. Turn on to also return records that have not changed since the last run, labelled UNCHANGED. This returns, and bills, rows you already have.
emitExpiredbooleanOff by default. Turn on to also return records that were present in the previous run's result set and are no longer found, labelled EXPIRED. Only produced when a run covered its whole setup, so a capped or continued run never reports records as gone. This returns, and bills, extra rows.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full record; the Apify dataset is never changed. Leave empty to skip the export.
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

recordTyperecordType
idid
propwireUrlpropwireUrl
addressaddress
citycity
statestate
zipzip
propertyTypepropertyType
bedroomsbedrooms
bathroomsbathrooms
buildingAreaSfbuildingAreaSf
livingAreaSflivingAreaSf
Show 248 more fields
lotSizeSflotSizeSf
yearBuiltyearBuilt
estimatedValueestimatedValue
estimatedEquityestimatedEquity
estimatedEquityPercentageestimatedEquityPercentage
lastSoldDatelastSoldDate
lastSoldPricelastSoldPrice
daysOnMarketdaysOnMarket
mlsListPricemlsListPrice
mlsStatusmlsStatus
leadTypesleadTypes
ownerNamesownerNames
ownerTypesownerTypes
ownerOccupiedownerOccupied
ownershipYearsownershipYears
ownerMailingAddressownerMailingAddress
portfolioPropertiesOwnedportfolioPropertiesOwned
portfolioValueportfolioValue
foreclosureActiveforeclosureActive
auctionDateauctionDate
apnapn
countycounty
zoningzoning
latitudelatitude
longitudelongitude
taxAssessedValuetaxAssessedValue
detailFetcheddetailFetched
sourceTypesourceType
scrapedAtscrapedAt
changeTypechangeType
imageUrlimageUrl
photoCountphotoCount
adjustableadjustable
apn_unformattedapn_unformatted
area_1st_floor_sfarea_1st_floor_sf
area_2nd_floor_sfarea_2nd_floor_sf
area_lot_deptharea_lot_depth
area_lot_widtharea_lot_width
area_upper_floors_sfarea_upper_floors_sf
arms_length_transactionarms_length_transaction
assessed_improvement_percentageassessed_improvement_percentage
assessed_improvement_valueassessed_improvement_value
assessed_land_valueassessed_land_value
assessed_total_valueassessed_total_value
assessment_yearassessment_year
assumableassumable
attic_areaattic_area
attom_last_statusattom_last_status
attom_last_status_dateattom_last_status_date
attom_priceattom_price
basement_finished_percentagebasement_finished_percentage
basement_sfbasement_sf
basement_typebasement_type
BathroomsFullBathroomsFull
BathroomsHalfBathroomsHalf
BathroomsOneQuarterBathroomsOneQuarter
BathroomsThreeQuarterBathroomsThreeQuarter
BathroomsTotalIntegerBathroomsTotalInteger
BedroomsTotalBedroomsTotal
building_area_sfbuilding_area_sf
building_stylebuilding_style
buildings_countbuildings_count
carportcarport
carport_area_sfcarport_area_sf
carrier_routecarrier_route
carrybackcarryback
census_blockcensus_block
census_block_groupcensus_block_group
census_tractcensus_tract
constructionconstruction
cooling_typecooling_type
CoolingYNCoolingYN
CountryCountry
CountyOrParishCountyOrParish
deckdeck
deck_area_sfdeck_area_sf
deed_typedeed_type
DirectionsDirections
DisclaimerDisclaimer
DockDock
document_datedocument_date
driveway_area_sfdriveway_area_sf
driveway_materialdriveway_material
estimated_loan_balanceestimated_loan_balance
estimated_loan_paymentestimated_loan_payment
exterior_typeexterior_type
fipsfips
fireplacefireplace
fireplace_countfireplace_count
fireplace_typefireplace_type
FireplaceYNFireplaceYN
foreclosure_typeforeclosure_type
FranchiseAffiliationFranchiseAffiliation
garage_area_sfgarage_area_sf
garage_typegarage_type
grantee_namegrantee_name
grantor_namegrantor_name
heating_fuelheating_fuel
heating_typeheating_type
househouse
interest_rateinterest_rate
interest_rate_sourceinterest_rate_source
interest_rate_typeinterest_rate_type
interior_styleinterior_style
InternetAddressDisplayYNInternetAddressDisplayYN
InternetAutomatedValuationDisplayYNInternetAutomatedValuationDisplayYN
InternetConsumerCommentYNInternetConsumerCommentYN
jurisdictionjurisdiction
labellabel
land_useland_use
LatitudeLatitude
legal_descriptionlegal_description
lender_codelender_code
lender_namelender_name
lender_typelender_type
ListAgentEmailListAgentEmail
ListAgentFaxListAgentFax
ListAgentFirstNameListAgentFirstName
ListAgentFullNameListAgentFullName
ListAgentKeyListAgentKey
ListAgentLastNameListAgentLastName
ListAgentMlsIdListAgentMlsId
ListAgentOfficePhoneListAgentOfficePhone
ListAgentPreferredPhoneListAgentPreferredPhone
ListAgentURLListAgentURL
ListingContractDateListingContractDate
ListingIdListingId
ListingKeyListingKey
ListOfficeKeyListOfficeKey
ListOfficeMlsIdListOfficeMlsId
ListOfficeNameListOfficeName
ListOfficePhoneListOfficePhone
ListPriceListPrice
living_area_sfliving_area_sf
LivingAreaLivingArea
LivingAreaUnitsLivingAreaUnits
loan_amountloan_amount
loan_balanceloan_balance
loan_maturity_dateloan_maturity_date
loan_typeloan_type
loan_type_codeloan_type_code
LongitudeLongitude
lot_numberlot_number
lot_size_acreslot_size_acres
lot_size_sflot_size_sf
LotSizeAcresLotSizeAcres
LotSizeAreaLotSizeArea
LotSizeUnitsLotSizeUnits
market_improvement_percentagemarket_improvement_percentage
market_improvement_valuemarket_improvement_value
market_land_valuemarket_land_value
market_total_valuemarket_total_value
ModificationTimestampModificationTimestamp
mortgage_adjustablemortgage_adjustable
mortgage_amountmortgage_amount
mortgage_assumablemortgage_assumable
mortgage_bookmortgage_book
mortgage_document_number_formattedmortgage_document_number_formatted
mortgage_document_number_legacymortgage_document_number_legacy
mortgage_instrument_numbermortgage_instrument_number
mortgage_interest_ratemortgage_interest_rate
mortgage_interest_rate_typemortgage_interest_rate_type
mortgage_lender_codemortgage_lender_code
mortgage_lender_namemortgage_lender_name
mortgage_lender_typemortgage_lender_type
mortgage_loan_maturity_datemortgage_loan_maturity_date
mortgage_loan_typemortgage_loan_type
mortgage_loan_type_codemortgage_loan_type_code
mortgage_pagemortgage_page
mortgage_recording_datemortgage_recording_date
mortgage_termmortgage_term
mortgage_term_typemortgage_term_type
notice_typenotice_type
OnMarketDateOnMarketDate
owner_occupiedowner_occupied
owner_relationship_typeowner_relationship_type
ownership_length_in_monthsownership_length_in_months
ownership_length_in_yearsownership_length_in_years
ParcelNumberParcelNumber
parking_spacesparking_spaces
ParkingTotalParkingTotal
partial_bathroomspartial_bathrooms
patiopatio
patio_area_sfpatio_area_sf
person_skperson_sk
photo_urlphoto_url
PhotosChangeTimestampPhotosChangeTimestamp
PhotosCountPhotosCount
plumbing_fixtures_countplumbing_fixtures_count
PoolPrivateYNPoolPrivateYN
porchporch
porch_area_sfporch_area_sf
porch_typeporch_type
portfolio_estimated_equityportfolio_estimated_equity
portfolio_estimated_mortgage_balanceportfolio_estimated_mortgage_balance
portfolio_valueportfolio_value
PostalCityPostalCity
PostalCodePostalCode
previous_assessed_total_valueprevious_assessed_total_value
properties_ownedproperties_owned
properties_purchased_last_12_monthsproperties_purchased_last_12_months
properties_purchased_last_6_monthsproperties_purchased_last_6_months
property_classproperty_class
property_typeproperty_type
property_use_codeproperty_use_code
property_use_code_descriptionproperty_use_code_description
PropertySubTypePropertySubType
PropertyTypePropertyType
PublicRemarksPublicRemarks
recorder_positionrecorder_position
recording_daterecording_date
roof_constructionroof_construction
roof_materialroof_material
seller_financeseller_finance
shedshed
shed_area_sfshed_area_sf
SourceSystemIDSourceSystemID
SourceSystemNameSourceSystemName
SpaYNSpaYN
StandardStatusStandardStatus
StateOrProvinceStateOrProvince
StoriesTotalStoriesTotal
streetstreet
street_typestreet_type
subdivisionsubdivision
SubdivisionNameSubdivisionName
tax_billed_amounttax_billed_amount
tax_yeartax_year
TaxLegalDescriptionTaxLegalDescription
termterm
term_typeterm_type
transaction_typetransaction_type
transaction_type_codetransaction_type_code
transactionidtransactionid
TransactionTypeTransactionType
transfer_amounttransfer_amount
UnparsedAddressUnparsedAddress
view_descriptionview_description
VirtualTourURLUnbrandedVirtualTourURLUnbranded
WaterfrontYNWaterfrontYN
year_builtyear_built
YearBuiltYearBuilt
zip4zip4
ZoningZoning
changedFieldschangedFields
previousValuespreviousValues
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "recordType": "property",
  "id": 12345678,
  "propwireUrl": "https://propwire.com/realestate/100-Main-St-Anytown-FL/12345678/property-details",
  "address": "100 Main St",
  "city": "Anytown",
  "state": "FL",
  "zip": "32000",
  "county": "Sample",
  "propertyType": "SFR",
  "bedrooms": 3,
  "bathrooms": 2,
  "buildingAreaSf": 1650,
  "lotSizeSf": 6500,
  "yearBuilt": 1998,
  "estimatedValue": 344800,
  "estimatedEquity": 182400,
  "estimatedEquityPercentage": 53,
  "lastSoldDate": "2021-06-17",
  "lastSoldPrice": 250000,
  "daysOnMarket": 42,
  "mlsListPrice": 325000,
  "mlsListDate": "2026-08-07",
  "mlsStatus": "ACTIVE",
  "leadTypes": [
    "ABSENTEE_OWNER",
    "HIGH_EQUITY",
    "OUT_OF_STATE_OWNER"
  ],
  "ownerNames": [
    "SAMPLE JANE",
    "SAMPLE JOHN"
  ],
  "ownerTypes": [
    "INDIVIDUAL"
  ],
  "ownerOccupied": false,
  "ownershipYears": 5,
  "ownerMailingAddress": "PO Box 1000, Sample Town, NJ 07000",
  "portfolioPropertiesOwned": 4,
  "portfolioValue": 1240000,
  "foreclosureActive": true,
  "auctionDate": "2026-12-02",
  "apn": "12-34-56-78-90",
  "zoning": "R1",
  "latitude": "28.500000",
  "longitude": "-81.400000",
  "taxAssessedValue": 270000,
  "taxBilledAmount": "3400.00",
  "imageUrl": "https://images.example.com/sample-cover.jpg",
  "imageUrls": [
    "https://images.example.com/sample-1.jpg",
    "https://images.example.com/sample-2.jpg"
  ],
  "photoCount": 28,
  "detailFetched": true,
  "sourceType": "search",
  "scrapedAt": "2026-09-25T12:00:00Z",
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-09-25T12:00:00Z",
  "lastSeenAt": "2026-09-25T12:00:00Z",
  "raw": {
    "note": "the complete verbatim source payload: owner, portfolio, foreclosure, mortgage, transfer, tax, parcel and full MLS objects"
  }
}

Ways to use this data

  • Real estate wholesalers and investors: build daily lead lists of absentee owners, pre-foreclosures and high-equity properties in a target market.
  • Landlord and portfolio outreach: identify tired landlords, cash flow rentals and multi-property owners for acquisition or partnership outreach.
  • Skip tracing and direct mail: pull owner names and mailing addresses for a filtered set of leads.
  • Foreclosure and auction deal sourcing: track pre-foreclosure, auction and bank-owned flags with dates, trustee, lender and notice detail.
  • Market and appraisal research: gather comparable sales, equity and tax-assessment data across a ZIP, city or county.
  • Recurring lead monitoring: schedule the actor to return only the new or changed leads in a market, for daily or weekly outreach.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Propwire Scraper return?

The documented output for Propwire Scraper includes recordtype, id, propwireurl, address, city, state, zip and propertytype. Availability of each field depends on the source page and the selected mode.

How much does Propwire Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Why did a run return fewer properties than I expected?

A few honest reasons: Max records or Max pages per search stopped the run early; Propwire itself serves only the first 10,000 rows of any one search, so a very broad sweep needs narrower geography or filters; a location in Cities, ZIPs or counties could not be resolved and was skipped; or a lead-type flag marked premium on the site came back empty because it needs a Propwire account. The run log warns when a limit, the 10,000-row cut-off or an unresolved location stopped part of the collection.

Can I use it with AI agents or automation platforms?

Yes. Call it from the API, the Scheduler, or any Apify integration (Make, Zapier, n8n, Google Sheets, webhooks), or from an MCP client through Apify's own MCP server.

Ready to collect with Propwire Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.