Apartments Properties and Details Scraper avatar

Apartments Properties and Details Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Apartments Properties and Details Scraper

Apartments Properties and Details Scraper

Permission-gated Apartments.com rental-listing parser. It makes no source requests unless prior written authorization is confirmed.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Real Estate API

Real Estate API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Contains a parser for rental listings from official Apartments.com pages using HTTPS and Cheerio parsing of HTML, JSON-LD, and embedded JSON. The current Terms of Service (last updated July 11, 2025) restrict copying site materials without prior written consent and prohibit robots, spiders, and other automatic devices from accessing, monitoring, or copying pages for unauthorized purposes. No applicable written authorization is recorded. The Actor therefore makes zero source requests by default, finishes SUCCEEDED with collectionStatus: SKIPPED_POLICY, and writes no dataset rows.

OUTPUT_SUMMARY.status and runStatus use only SUCCEEDED or FAILED. Summaries include bounded generic failureReasons, or a policyReason when the no-request gate skips collection. A valid empty search finishes successfully without a placeholder row. A request or parsing failure before real listing data is saved finishes FAILED; if a later request, detail fetch, or dataset write fails after one or more real listings have been saved, the run remains SUCCEEDED with collectionStatus: PARTIAL and the saved listing count. Errors and access challenges are never written as dataset records.

Each dataset record must have an Apartments.com property URL and at least one source-backed property fact such as price, bedrooms, bathrooms, floor area, neighborhood, street address, or property description. Page titles, search-shell JSON-LD, and title/link-only cards are rejected. An explicit no-results page is a successful empty search; an unrecognized page with no valid listings is a failed run.

Behavior

  • Uses a fixed transparent ApifyActor/1.0 user agent and direct public HTTPS transport.
  • authorizationConfirmed defaults to false; set it to true only when current written permission expressly covers automated collection and reuse. The checkbox is an operator attestation and does not grant permission.
  • Does not follow redirects, solve verification challenges, or use proxy transport.
  • Supports location fallback, caller-supplied official URLs, bounded pagination, optional source-linked detail pages, public review objects, and price/bedroom filters.
  • Extracts listing identity, property URLs, IDs, addresses, rent ranges, beds, baths, square footage, property type, amenities, images, ratings, availability, phone values, reviews, and response evidence when exposed.
  • Omits null, blank, and empty values from every dataset record.
  • Writes OUTPUT_SUMMARY to the default key-value store.
  • Records failure and policy-skip status only in OUTPUT_SUMMARY; it emits only source-backed property_listing dataset records.

Input

FieldTypeDescription
authorizationConfirmedbooleanPrior written permission attestation, default false
startUrlsarrayOfficial HTTPS Apartments.com URLs
locationstringFallback path slug, default chicago-il
zip / querystringOptional run provenance for callers using ZIP or search input
includeDetailsbooleanFetch source-linked public detail pages, default true
includeReviewsbooleanRetain public review objects, default false
maxReviewsintegerMaximum review objects per listing, default 20
maxItemsintegerMaximum source-backed listings, default 50
maxPagesintegerMaximum direct listing pages per start URL, default 5
minPrice / maxPricenumberOptional monthly-price filters
minBedrooms / maxBedroomsnumberOptional bedroom-range filters
requestDelayMsintegerBounded pacing delay, default 250
timeoutSecsintegerDirect request timeout, default 45

Example

{
"location": "chicago-il",
"includeDetails": true,
"maxItems": 50,
"maxPages": 5
}

The complete field contract is in .actor/dataset_schema.json. Source-specific rental fields are emitted only when supported by an authorized public response; access failures never create fabricated listings.

Offline validation

npm test, npm run lint, and apify validate-schema validate offline run-status behavior, JavaScript syntax, and Actor schemas. They do not establish current property data or grant permission. No live Actor run is documented until written authorization is on file.

Code structure

The src/main.js entrypoint only starts the Actor lifecycle. Configuration, input normalization, direct HTTP access, HTML/JSON-LD parsing, record shaping, and run orchestration live in focused modules under src/, so each part can be reviewed and tested independently.

Runtime dependency remediation — October 3, 2026

This bounded implementation only uses JSON input, dataset appends, JSON key-value storage and (where needed) dataset counts. Its project-local src/platform.js now uses the official Apify REST storage contract in Cloud and SDK-compatible local JSON files, with Apify’s censoring logger. Removing the unused full SDK/Crawlee runtime removes its transitive crawler, cache, FTP and proxy dependency graph; it does not claim that those vulnerable paths were unreachable. Source permission gates, transport restrictions, output fields and historical storage are preserved. The adapter does not implement queues, migration, automatic retries or non-JSON storage; no such methods are used by this Actor. Tokens remain environment-only bearer headers to the fixed official API host.

The Docker build uses Node 24 and deterministic npm ci --omit=dev --ignore-scripts. npm run test:platform verifies local append/preservation, Cloud storage routing and authenticated write failures. Existing parser/policy tests remain necessary. Technical dependency remediation and a no-request gate run do not qualify live source extraction.