Apartments Properties and Details Scraper
Pricing
from $3.99 / 1,000 results
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
Maintained by CommunityActor 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.
authorizationConfirmeddefaults tofalse; 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-backedproperty_listingdataset records.
Input
| Field | Type | Description |
|---|---|---|
| authorizationConfirmed | boolean | Prior written permission attestation, default false |
| startUrls | array | Official HTTPS Apartments.com URLs |
| location | string | Fallback path slug, default chicago-il |
| zip / query | string | Optional run provenance for callers using ZIP or search input |
| includeDetails | boolean | Fetch source-linked public detail pages, default true |
| includeReviews | boolean | Retain public review objects, default false |
| maxReviews | integer | Maximum review objects per listing, default 20 |
| maxItems | integer | Maximum source-backed listings, default 50 |
| maxPages | integer | Maximum direct listing pages per start URL, default 5 |
| minPrice / maxPrice | number | Optional monthly-price filters |
| minBedrooms / maxBedrooms | number | Optional bedroom-range filters |
| requestDelayMs | integer | Bounded pacing delay, default 250 |
| timeoutSecs | integer | Direct 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.