AppFolio Scraper — US Rentals + Office Phone from Any PM Site avatar

AppFolio Scraper — US Rentals + Office Phone from Any PM Site

Pricing

from $1.00 / 1,000 results

Go to Apify Store
AppFolio Scraper — US Rentals + Office Phone from Any PM Site

AppFolio Scraper — US Rentals + Office Phone from Any PM Site

Turn any AppFolio listings URL into live vacancies with the office phone the index hides. Rent, beds, baths, address, lat/lng, photos, apply URL, office name, phone. Paste {tenant}.appfolio.com/listings. HTTP only, no login. JSON, CSV or Excel. You bring the PM URL — not a weekly dump.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

16

Monthly active users

7 days ago

Last modified

Share

Turn any AppFolio listings URL into structured vacancies — including the office phone the index page hides. Paste https://{tenant}.appfolio.com/listings (or a detail URL, or a custom domain that redirects there) and get one row per unit: rent, beds, baths, address, lat/lng, photos, apply link, office name, and phone.

Why Use This Scraper?

  • URL-in, live scrape. You point it at a manager's own AppFolio site. It is not a weekly snapshot of "all AppFolio."
  • Office phone on every detail. The listings index has no phone. The detail sidebar does (ATLAS PROPERTY GROUP + (415) 216-4945 in the smoke test).
  • Map coordinates. Lat/lng come from the listings page googleMap.markers JSON, not guessed from the address.
  • Apply + showing URLs. Ready-to-use links onto that manager's application and showing forms.
  • No login, no browser. Cheerio HTTP only. Proxy optional.

Overview

One dataset row per vacancy on the AppFolio site you pasted. Typical use: a lead-gen or inventory job that already has a list of property-manager websites. There is no national "search by city" input — AppFolio does not publish a public directory of tenant hosts. Filter on the manager's site, copy the URL.

Supported Inputs

InputWhat it isExample
Listings indexThat PM's current vacancieshttps://apg.appfolio.com/listings
Detail URLA single unithttps://apg.appfolio.com/listings/detail/e4afc96a-ac2d-499b-80d8-729e87091806
Custom domainMarketing site that 302s onto AppFoliohttps://www.examplepm.com/listings/
startUrlSingle-URL convenience fieldsame as one startUrls item

Unsupported: AppFolio Property Manager (the logged-in SaaS), tenant portals, and "all AppFolio in California" with no URL. You must have a listings URL.

Seed list: this repo ships seeds/start-urls.json — ~2,760 {tenant}.appfolio.com/listings URLs mined from Common Crawl and live-checked. Paste a subset into startUrls when you want multi-PM coverage without hunting hosts yourself.

Use Cases

AudienceWhat they get
Rental lead-genOffice phone + apply URL for the managers whose sites you already know
PropTech / aggregatorsLive inventory from PM sites that never hit Zillow
Market researchersAsking rents, beds, availability on a named manager
AgenciesA CRM-ready dump of one competitor's vacancies

How It Works

How the AppFolio scraper works

  1. Paste one or more {tenant}.appfolio.com/listings URLs.
  2. The actor reads every vacancy card and the map-marker JSON (rent, beds, address, photo, lat/lng).
  3. With scrapeDetails on (default), it opens each detail page for office name, phone, full description, apply/showing URLs, and extra photos.
  4. It stops at maxItems. One row per vacancy.

Input Configuration

FieldTypeDefaultWhat it does
startUrlsstring listsample SF listings URLAppFolio listings or detail URLs
startUrlstringemptySame, for a single URL
maxItemsinteger100Cap on saved listings (free accounts hard-capped at 100)
scrapeDetailsbooleantrueVisit detail pages for phone / office name
proxyproxy objectoffOptional. Direct fetch worked in recon.

Example — one manager, 25 listings

{
"startUrls": ["https://apg.appfolio.com/listings"],
"maxItems": 25
}

Example — index only, no phones (faster)

{
"startUrls": ["https://aaaprop.appfolio.com/listings"],
"maxItems": 100,
"scrapeDetails": false
}

Output Overview

Each row is one vacancy. Index fields (rent, beds, address, coordinates, photo) are always present when the card parsed. Phone and office name require scrapeDetails: true.

Output Samples

Listings URL https://apg.appfolio.com/listings (detail follow-up):

{
"platform": "appfolio",
"id": "e4afc96a-ac2d-499b-80d8-729e87091806",
"listingId": 428,
"tenant": "apg",
"url": "https://apg.appfolio.com/listings/detail/e4afc96a-ac2d-499b-80d8-729e87091806",
"title": "Newer Studios with Outdoor Amenities!",
"address": "345 6th St, Unit 805, San Francisco, CA 94103",
"city": "San Francisco",
"state": "CA",
"zip": "94103",
"latitude": 37.778165,
"longitude": -122.404677,
"rent": 2700,
"rentFormatted": "$2,700/mo",
"currency": "USD",
"beds": 0,
"baths": 1,
"sqft": 350,
"available": "NOW",
"officeName": "ATLAS PROPERTY GROUP",
"phone": "(415) 216-4945",
"applyUrl": "https://apg.appfolio.com/listings/rental_applications/new?listable_uid=e4afc96a-ac2d-499b-80d8-729e87091806&source=Website"
}

Studio units report beds: 0.

Key Output Fields

GroupFields
Identityplatform, id (UUID), listingId, tenant, url
Listingtitle, description, rent, rentFormatted, currency, beds, baths, sqft, available
Locationaddress, street, city, state, zip, latitude, longitude
Mediaimage, images[]
ContactofficeName, phone, applyUrl, showingUrl, contactUrl
Extraamenities[], utilities, petPolicy, scrapedAt

AppFolio listing sites do not publish a public email on the vacancy pages we scrape. Phone is on the detail sidebar. Email is a gap vs Buildium's XML feed.

FAQ

Can I scrape all AppFolio listings in a city without URLs? Not via AppFolio search — there is none. Use seeds/start-urls.json (~2.7k live-checked tenant listings URLs from Common Crawl) and filter yourself, or ask for a custom geo-filtered seed. CRT.sh does not enumerate tenants (wildcard cert).

Is this the same as housingfeed/appfolio-scraper? No. That actor reads a pre-built database and filters by state/city. This actor live-scrapes the URL you give it, including phone.

Why is email empty? It is not on the public listings/detail HTML. Do not expect it.

Do I need a proxy? Recon loaded three tenants with a plain GET. Turn proxy on if you hit blocks.

Support

Open an issue on the actor page. For custom work: see Additional Services below.

Additional Services

Need a geo-filtered cut of the seed list, a combined AppFolio+Buildium run, or a private feed? Get in touch via the actor issues tab or memo23's profile. The raw seed files also live in this repo under seeds/.

Explore More Scrapers

🤖 For AI Agents & LLM Apps

Compact reference for agents calling this actor via the Apify MCP server or the Apify API (memo23/appfolio-scraper).

Purpose: Live-scrape rental vacancies from an AppFolio property-manager listings URL, including office phone from the detail page.

Minimal input:

{
"startUrls": ["https://apg.appfolio.com/listings"],
"maxItems": 25
}

Output fields: platform, id, listingId, tenant, url, title, description, address, street, city, state, zip, latitude, longitude, rent, rentFormatted, currency, beds, baths, sqft, available, amenities, utilities, petPolicy, image, images, applyUrl, showingUrl, contactUrl, officeName, phone, scrapedAt.

Behaviors an agent should know:

  • Always set maxItems. Default 100; free Apify accounts are capped at 100.
  • Requires a real {tenant}.appfolio.com/listings (or detail) URL. No city-wide search.
  • scrapeDetails default true adds phone + office name; false is index-only.
  • beds: 0 means studio.
  • No public email on these pages.
  • Proxy off by default.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by AppFolio, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available rental-listing pages on *.appfolio.com — no authenticated Property Manager endpoints, tenant records, or content behind a login. Users are responsible for ensuring their use complies with AppFolio's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

SEO Keywords

appfolio scraper, appfolio listings api, scrape appfolio, appfolio rental listings, property manager listings scraper, appfolio.com/listings, US rental scraper, apartment vacancy scraper, appfolio office phone, property management inventory, appfolio lead generation, small landlord listings, off-market rentals scraper, appfolio data extraction, US multifamily listings