PropertyShark Scraper avatar

PropertyShark Scraper

Pricing

$7.25 / 1,000 properties

Go to Apify Store
PropertyShark Scraper

PropertyShark Scraper

Collect public PropertyShark property records by geography or public property page URLs. Get addresses, sale history, building and lot details, coordinates, breadcrumbs, and walkability data when available in structured dataset rows.

Pricing

$7.25 / 1,000 properties

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

🏠 PropertyShark property records for real estate research

Real estate researchers, property appraisers, investors, and market analysts can collect public PropertyShark records for one supported geography or a list of public property page URLs. Get structured rows with property IDs, addresses, sale history, building and lot details, coordinates, breadcrumbs, and walkability when the source provides them, so you can review a market without copying fields by hand.

Use cases

📊 PropertyShark property records

Each saved row represents one public PropertyShark property. Rows can include the property ID, source page, address parts, property type and class, sale history, building and lot measurements, stories, year built, coordinates, page breadcrumbs, and walkability details when PropertyShark provides them.

▶️ Run PropertyShark searches or page collections

Choose Property search for one geography and optional sale, price, and building-size filters. Choose Property pages to submit one or more public PropertyShark page URLs. The first eligible match for a property is saved; later matches of the same source property are ignored.

⚙️ Input

Only fields for the selected target are used in a run. Use search for one geography or propertyPages for submitted public page URLs.

FieldTypeWhat it does
targetstringRequired. Choose search for one geography or propertyPages for public PropertyShark page URLs.
geographystringPlace for Property search, such as a city, county, state, or ZIP code.
saleDateFromstringFirst sale date to include. Use a calendar date or a relative date.
saleDateTostringLast sale date to include. Use a calendar date or a relative date.
salePriceMinnumberInclude sales at or above this price.
salePriceMaxnumberInclude sales at or below this price.
buildingSizeMinnumberInclude buildings at or above this size in square feet.
buildingSizeMaxnumberInclude buildings at or below this size in square feet.
propertyPageUrlsarray of objectsAdd at least one public PropertyShark property page URL for Property pages, with one URL in each row.
propertyPageUrls[]objectOne submitted property-page URL object.
propertyPageUrls[].urlstring (URL)A public PropertyShark property page URL.
maxItemsintegerPositive upper bound for property records in the run; the form starts at 1. Leave this empty to return all available results until the source is exhausted.

The date, price, and building-size fields are used only for Property search. Leave a filter blank when you do not want that boundary. maxItems applies to both targets; leaving it empty returns all available results until the source is exhausted.

Each run reads public source pages at run time, so its rows reflect the PropertyShark data available then.

This example matches the public input from a successful current-beta default-input search run:

{
"target": "search",
"geography": "New York, NY",
"maxItems": 1
}

🧾 Output

Property search and Property pages use the same output shape. The public run output has one dataset field (string URL), which opens the default dataset of structured property rows. The table below covers every field in each dataset row. Fields other than propertyId, sourceUrl, and address.full are included when the source returns them.

FieldTypeWhat it does
propertyIdstringStable PropertyShark ID for the property.
sourceUrlstring (URL)PropertyShark source page for the property.
addressobjectProperty address and place details.
address.fullstringFull property address; the required address value.
address.streetstringStreet name and number when available.
address.citystringCity when available.
address.statestringState or region when available.
address.zipCodestringZIP code when available.
address.countystringCounty when available.
address.boroughstringBorough when available.
address.neighborhoodstringNeighborhood when available.
propertyTypestringProperty type from PropertyShark when available.
propertyClassstringProperty class from PropertyShark when available.
buildingAreaSqFtnumberBuilding area in square feet when available.
lotAreaSqFtnumberLot area in square feet when available.
lotDimensionsobjectLot width and depth when available.
lotDimensions.widthFtnumberLot width in feet when available.
lotDimensions.depthFtnumberLot depth in feet when available.
storiesnumberNumber of building stories when available.
yearBuiltintegerBuilding year when available.
coordinatesobjectProperty latitude and longitude when available.
coordinates.latitudenumberLatitude in decimal degrees.
coordinates.longitudenumberLongitude in decimal degrees.
salesarray of objectsSale history found for the property.
sales[]objectOne sale transaction with a date and price.
sales[].saleDatestring (date)Date of one sale.
sales[].salePricenumberPrice of one sale.
breadcrumbsarray of stringsLabels in the PropertyShark page path.
breadcrumbs[]stringOne label from the PropertyShark page path.
walkabilityobjectWalkability score and text when available.
walkability.scorenumberWalkability score from 0 to 100.
walkability.descriptionstringText that explains the walkability score.

Here is the complete row returned by that successful current-beta search run:

{
"propertyId": "130719",
"sourceUrl": "https://www.propertyshark.com/mason/Property/130719/215-33-St-Brooklyn-NY-11232/",
"address": {
"full": "215 33rd Street, Brooklyn, NY 11232",
"street": "215 33rd Street",
"city": "Brooklyn",
"state": "NY",
"zipCode": "11232",
"borough": "Brooklyn",
"county": "Brooklyn County",
"neighborhood": "Greenwood Heights"
},
"propertyType": "Over Six Families without Stores (C1)",
"propertyClass": "C1",
"buildingAreaSqFt": 13400,
"lotAreaSqFt": 5000,
"lotDimensions": {
"widthFt": 50,
"depthFt": 100.17
},
"stories": 4,
"yearBuilt": 1917,
"coordinates": {
"longitude": -74.000705003735,
"latitude": 40.6550748138328
},
"sales": [
{
"saleDate": "2021-09-01",
"salePrice": 4725000
},
{
"saleDate": "2017-07-06",
"salePrice": 5800000
}
],
"breadcrumbs": [
"Kings",
"11232",
"33rd St",
"215 33rd St"
],
"walkability": {
"score": 83,
"description": "Very Walkable"
}
}

💳 Pricing

This Actor's PropertyShark pricing uses pay-per-event billing. You pay once for each successfully collected property. The charge applies to a property only after that property is saved.

The maxItems limit can help you control how many property rows a run may save. A blank limit means the Actor keeps collecting available results until the source is exhausted.

🔌 Integrations

Use Apify Console to start a run and open the default dataset link. The Actor does not include third-party delivery connections or automation integrations.

Walkthrough

❓ FAQ

Can I collect one property's details from a public page URL?

Yes. Choose propertyPages and add the public PropertyShark page URL in propertyPageUrls. You can add a list of URLs in one run.

Can I set exact sale-date boundaries?

Yes. In Property search, use saleDateFrom and saleDateTo. Each accepts a calendar date or a relative date, and either field can be left blank.

What does leaving Maximum number of records empty do?

It returns all available results until the source is exhausted. Set a positive maxItems value when you want an upper bound for the run.

Does the Actor return prior sales and walkability?

It returns sale history, breadcrumbs, and walkability details when those values are available on the public PropertyShark page.

What happens if the same property appears more than once?

The first eligible match is saved. Later matches of the same source property are ignored.

Does this Actor need a PropertyShark subscription?

No PropertyShark credentials are required. The Actor collects public PropertyShark records, and this Actor uses Apify pay-per-event pricing.

Is this a PropertyShark homes for sale tool?

No. It collects public property records and sale history, not a listing feed for homes for sale.

Is the PropertyShark data verified by this Actor?

The rows come from public PropertyShark pages. Check each sourceUrl and the fields returned for that page; this Actor does not add an independent verification service.

Can one run search several geographies?

No. Property search accepts one geography per run. To collect several direct pages, use propertyPages and submit their public URLs.

📝 Changelog

0.0: Initial release

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré