ApartmentJobs Scraper — Apartment Industry Job Listings
Pricing
from $3.00 / 1,000 job listings
ApartmentJobs Scraper — Apartment Industry Job Listings
Extract apartment industry job listings from ApartmentJobs.com: titles, employers, locations, salary ranges, experience levels, rent-discount perks, full descriptions, and apply links.
Pricing
from $3.00 / 1,000 job listings
Rating
0.0
(0)
Developer
Crab Walker
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
ApartmentJobs Scraper
Scrape apartment industry job listings from ApartmentJobs.com, the National Apartment Association's job board — roughly 16,700 live openings for leasing consultants, maintenance technicians, property managers, community managers, and groundskeepers.
Search by keyword and location, filter by category, experience, salary band, or the employee rent-discount perk, or point the Actor straight at any job, company, city, state, or category page. No login or cookies are used.
By default the Actor visits each job page to return the full description, normalized location, job category, and remote flag alongside the search-card data.
Input
The simplest input is:
{"keywords": "maintenance technician","location": "Atlanta, GA","maxItems": 100}
Narrow the search with a radius and the board's own facets:
{"keywords": "leasing","location": "Austin, TX","radiusMiles": 50,"categories": ["leasing", "communityManager"],"experienceLevels": ["entryLevel", "from2To5Years"],"salaryRanges": ["from40kTo75k"],"rentDiscounts": ["upTo50"],"maxItems": 200,"includeDescription": true}
Leave keywords and location empty to browse every listing on the board. Each selected category is searched separately, as are all searchTerms × locations combinations:
{"searchTerms": ["porter", "groundskeeper"],"locations": ["Dallas, TX", "Houston, TX"],"maxItemsPerSearch": 25}
startUrls accepts any apartmentjobs.com URL — a single job (/job/108313/maintenance-technician/), a company's openings (/company/886/cottonwood-residential/), a city (/cities/jobs-in-austin/), a state (/states/jobs-in-texas/), a category (/categories/maintenance/), remote roles (/countries/remote-jobs/), or a search URL you copied from the site. The aliases keyword, position, and maxItemsPerSearch are also supported.
Output
Every row carries the same fields, whichever input produced it:
- Job ID, canonical URL, title, and apply URL
- Employer name, company profile URL, and logo
- Displayed location plus split city, state, and country
- Salary range, experience level, employment type, category, industry, and remote flag
- Advertised employee rent discount — a perk specific to this board
- Featured-listing flag, human-readable and ISO posting dates, and expiration date
- Plain-text and HTML descriptions
- Search provenance and scrape timestamp
Fields stay null when the board does not publish them for a listing. Salary, rent discount, and experience appear on search cards; descriptions, categories, and the remote flag require includeDescription.
Field notes
Four fields behave in ways worth knowing before you build on them:
industryis not an industry. The board populates schema.orgindustrywith the job category, so this field mirrorscategoryand emits values like"Community Manager". It describes the role, not the employer's line of business — never route it into a firmographic or ICP industry filter.salaryis not normalized. It is the string the board displays, and the period varies per listing:"$27.00 - $28.00 hourly"and"$75,000 - $85,000 yearly"both occur. Parse the trailing unit before comparing figures.postedAtis display text,publishedAtis a timestamp.postedAtis what the page shows ("Jul 30, 2026");publishedAtis RFC 3339 UTC and is the field to sort or filter on. Search cards carry a date only and are anchored to00:00:00Z; job pages carry a precise time.stateformat depends on the source. Search cards abbreviate ("GA"), job pages spell out ("Georgia"). Normalize if you join on it.
Featured listings repeat across result pages; saveOnlyUniqueItems (on by default) deduplicates them by job ID.
Pricing
The Actor uses pay-per-event pricing. Platform usage is included.
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| Actor start (per run) | $0.001 | $0.001 | $0.001 | $0.001 | $0.001 | $0.001 |
| Job listing | $0.005 | $0.004 | $0.0035 | $0.003 | $0.002 | $0.0012 |
| Add-on: full job details | $0.002 | $0.0016 | $0.0013 | $0.0011 | $0.0009 | $0.0006 |
The add-on is charged only for jobs whose detail page was actually fetched, so includeDescription: false cuts the cost of a bulk export substantially. At the Free-tier rate, 1,000 jobs with full descriptions cost about $7.00; without descriptions, about $5.00. Failed requests and listings not written to the dataset are never charged.
Responsible use
This Actor requests only publicly available, signed-out ApartmentJobs.com pages, and honours the paths the site's robots.txt disallows. Use reasonable limits and delays, respect applicable laws and the site's terms, and do not use scraped data for spam or for automated decisions about individuals.
ApartmentJobs.com answers datacenter address ranges with HTTP 403, so US residential proxies are enabled by default and are effectively required. Blocks are per exit IP rather than per fingerprint: sessions are sticky per search, a blocked address is retired and rotated immediately, and browser-level TLS/header impersonation is used without solving CAPTCHAs.
Development and deployment
npm cinpm testnpm run lint
Add APIFY_API_TOKEN as an encrypted GitHub Actions secret. Pull requests run tests and linting; pushes to main deploy the Actor.