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.
| Input | What it controls |
|---|---|
addressesarray | Free-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. |
addressMatchModestring | How 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. |
startUrlsarray | Search 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. |
searchStatesarray | US 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. |
searchLocationsarray | Narrow 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. |
searchLeadTypesarray | Only return properties carrying these motivated-seller flags. Values marked premium on the site may require a Propwire account and can come back empty. |
searchPropertyTypesarray | Restrict the sweep to these property types. |
Show 18 more inputs
| Input | What it controls |
|---|---|
searchEstimatedValueMininteger | Only return properties estimated to be worth at least this much. Leave empty for no floor. |
searchEstimatedValueMaxinteger | Only return properties estimated to be worth at most this much. Leave empty for no ceiling. |
searchYearBuiltMininteger | Only return properties built in or after this year. Leave empty for no limit. |
searchYearBuiltMaxinteger | Only return properties built in or before this year. Leave empty for no limit. |
searchSoldSincestring | Only return properties last sold on or after this date, in YYYY-MM-DD form. Leave empty for no limit. |
searchOwnerTypearray | Only return properties owned by individuals or by companies/llcs/trusts. Leave empty for both. |
searchMlsStatusstring | Only return properties currently in this MLS state. Leave empty for all statuses. |
fetchDetailsboolean | Read 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). |
maxItemsinteger | Stop 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. |
maxPagesinteger | Runaway 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. |
resumeFromRunIdstring | Paste 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. |
incrementalModeboolean | Turn 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. |
stateKeystring | Optional. 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. |
emitUnchangedboolean | Off 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. |
emitExpiredboolean | Off 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. |
mcpConnectorsarray | Optionally 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. |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap 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.
recordTyperecordTypeididpropwireUrlpropwireUrladdressaddresscitycitystatestatezipzippropertyTypepropertyTypebedroomsbedroomsbathroomsbathroomsbuildingAreaSfbuildingAreaSflivingAreaSflivingAreaSfShow 248 more fields
lotSizeSflotSizeSfyearBuiltyearBuiltestimatedValueestimatedValueestimatedEquityestimatedEquityestimatedEquityPercentageestimatedEquityPercentagelastSoldDatelastSoldDatelastSoldPricelastSoldPricedaysOnMarketdaysOnMarketmlsListPricemlsListPricemlsStatusmlsStatusleadTypesleadTypesownerNamesownerNamesownerTypesownerTypesownerOccupiedownerOccupiedownershipYearsownershipYearsownerMailingAddressownerMailingAddressportfolioPropertiesOwnedportfolioPropertiesOwnedportfolioValueportfolioValueforeclosureActiveforeclosureActiveauctionDateauctionDateapnapncountycountyzoningzoninglatitudelatitudelongitudelongitudetaxAssessedValuetaxAssessedValuedetailFetcheddetailFetchedsourceTypesourceTypescrapedAtscrapedAtchangeTypechangeTypeimageUrlimageUrlphotoCountphotoCountadjustableadjustableapn_unformattedapn_unformattedarea_1st_floor_sfarea_1st_floor_sfarea_2nd_floor_sfarea_2nd_floor_sfarea_lot_deptharea_lot_deptharea_lot_widtharea_lot_widtharea_upper_floors_sfarea_upper_floors_sfarms_length_transactionarms_length_transactionassessed_improvement_percentageassessed_improvement_percentageassessed_improvement_valueassessed_improvement_valueassessed_land_valueassessed_land_valueassessed_total_valueassessed_total_valueassessment_yearassessment_yearassumableassumableattic_areaattic_areaattom_last_statusattom_last_statusattom_last_status_dateattom_last_status_dateattom_priceattom_pricebasement_finished_percentagebasement_finished_percentagebasement_sfbasement_sfbasement_typebasement_typeBathroomsFullBathroomsFullBathroomsHalfBathroomsHalfBathroomsOneQuarterBathroomsOneQuarterBathroomsThreeQuarterBathroomsThreeQuarterBathroomsTotalIntegerBathroomsTotalIntegerBedroomsTotalBedroomsTotalbuilding_area_sfbuilding_area_sfbuilding_stylebuilding_stylebuildings_countbuildings_countcarportcarportcarport_area_sfcarport_area_sfcarrier_routecarrier_routecarrybackcarrybackcensus_blockcensus_blockcensus_block_groupcensus_block_groupcensus_tractcensus_tractconstructionconstructioncooling_typecooling_typeCoolingYNCoolingYNCountryCountryCountyOrParishCountyOrParishdeckdeckdeck_area_sfdeck_area_sfdeed_typedeed_typeDirectionsDirectionsDisclaimerDisclaimerDockDockdocument_datedocument_datedriveway_area_sfdriveway_area_sfdriveway_materialdriveway_materialestimated_loan_balanceestimated_loan_balanceestimated_loan_paymentestimated_loan_paymentexterior_typeexterior_typefipsfipsfireplacefireplacefireplace_countfireplace_countfireplace_typefireplace_typeFireplaceYNFireplaceYNforeclosure_typeforeclosure_typeFranchiseAffiliationFranchiseAffiliationgarage_area_sfgarage_area_sfgarage_typegarage_typegrantee_namegrantee_namegrantor_namegrantor_nameheating_fuelheating_fuelheating_typeheating_typehousehouseinterest_rateinterest_rateinterest_rate_sourceinterest_rate_sourceinterest_rate_typeinterest_rate_typeinterior_styleinterior_styleInternetAddressDisplayYNInternetAddressDisplayYNInternetAutomatedValuationDisplayYNInternetAutomatedValuationDisplayYNInternetConsumerCommentYNInternetConsumerCommentYNjurisdictionjurisdictionlabellabelland_useland_useLatitudeLatitudelegal_descriptionlegal_descriptionlender_codelender_codelender_namelender_namelender_typelender_typeListAgentEmailListAgentEmailListAgentFaxListAgentFaxListAgentFirstNameListAgentFirstNameListAgentFullNameListAgentFullNameListAgentKeyListAgentKeyListAgentLastNameListAgentLastNameListAgentMlsIdListAgentMlsIdListAgentOfficePhoneListAgentOfficePhoneListAgentPreferredPhoneListAgentPreferredPhoneListAgentURLListAgentURLListingContractDateListingContractDateListingIdListingIdListingKeyListingKeyListOfficeKeyListOfficeKeyListOfficeMlsIdListOfficeMlsIdListOfficeNameListOfficeNameListOfficePhoneListOfficePhoneListPriceListPriceliving_area_sfliving_area_sfLivingAreaLivingAreaLivingAreaUnitsLivingAreaUnitsloan_amountloan_amountloan_balanceloan_balanceloan_maturity_dateloan_maturity_dateloan_typeloan_typeloan_type_codeloan_type_codeLongitudeLongitudelot_numberlot_numberlot_size_acreslot_size_acreslot_size_sflot_size_sfLotSizeAcresLotSizeAcresLotSizeAreaLotSizeAreaLotSizeUnitsLotSizeUnitsmarket_improvement_percentagemarket_improvement_percentagemarket_improvement_valuemarket_improvement_valuemarket_land_valuemarket_land_valuemarket_total_valuemarket_total_valueModificationTimestampModificationTimestampmortgage_adjustablemortgage_adjustablemortgage_amountmortgage_amountmortgage_assumablemortgage_assumablemortgage_bookmortgage_bookmortgage_document_number_formattedmortgage_document_number_formattedmortgage_document_number_legacymortgage_document_number_legacymortgage_instrument_numbermortgage_instrument_numbermortgage_interest_ratemortgage_interest_ratemortgage_interest_rate_typemortgage_interest_rate_typemortgage_lender_codemortgage_lender_codemortgage_lender_namemortgage_lender_namemortgage_lender_typemortgage_lender_typemortgage_loan_maturity_datemortgage_loan_maturity_datemortgage_loan_typemortgage_loan_typemortgage_loan_type_codemortgage_loan_type_codemortgage_pagemortgage_pagemortgage_recording_datemortgage_recording_datemortgage_termmortgage_termmortgage_term_typemortgage_term_typenotice_typenotice_typeOnMarketDateOnMarketDateowner_occupiedowner_occupiedowner_relationship_typeowner_relationship_typeownership_length_in_monthsownership_length_in_monthsownership_length_in_yearsownership_length_in_yearsParcelNumberParcelNumberparking_spacesparking_spacesParkingTotalParkingTotalpartial_bathroomspartial_bathroomspatiopatiopatio_area_sfpatio_area_sfperson_skperson_skphoto_urlphoto_urlPhotosChangeTimestampPhotosChangeTimestampPhotosCountPhotosCountplumbing_fixtures_countplumbing_fixtures_countPoolPrivateYNPoolPrivateYNporchporchporch_area_sfporch_area_sfporch_typeporch_typeportfolio_estimated_equityportfolio_estimated_equityportfolio_estimated_mortgage_balanceportfolio_estimated_mortgage_balanceportfolio_valueportfolio_valuePostalCityPostalCityPostalCodePostalCodeprevious_assessed_total_valueprevious_assessed_total_valueproperties_ownedproperties_ownedproperties_purchased_last_12_monthsproperties_purchased_last_12_monthsproperties_purchased_last_6_monthsproperties_purchased_last_6_monthsproperty_classproperty_classproperty_typeproperty_typeproperty_use_codeproperty_use_codeproperty_use_code_descriptionproperty_use_code_descriptionPropertySubTypePropertySubTypePropertyTypePropertyTypePublicRemarksPublicRemarksrecorder_positionrecorder_positionrecording_daterecording_dateroof_constructionroof_constructionroof_materialroof_materialseller_financeseller_financeshedshedshed_area_sfshed_area_sfSourceSystemIDSourceSystemIDSourceSystemNameSourceSystemNameSpaYNSpaYNStandardStatusStandardStatusStateOrProvinceStateOrProvinceStoriesTotalStoriesTotalstreetstreetstreet_typestreet_typesubdivisionsubdivisionSubdivisionNameSubdivisionNametax_billed_amounttax_billed_amounttax_yeartax_yearTaxLegalDescriptionTaxLegalDescriptiontermtermterm_typeterm_typetransaction_typetransaction_typetransaction_type_codetransaction_type_codetransactionidtransactionidTransactionTypeTransactionTypetransfer_amounttransfer_amountUnparsedAddressUnparsedAddressview_descriptionview_descriptionVirtualTourURLUnbrandedVirtualTourURLUnbrandedWaterfrontYNWaterfrontYNyear_builtyear_builtYearBuiltYearBuiltzip4zip4ZoningZoningchangedFieldschangedFieldspreviousValuespreviousValuesfirstSeenAtfirstSeenAtlastSeenAtlastSeenAtExample 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.
