AppFolio Scraper: Rental Listings and Property Manager Data avatar

AppFolio Scraper: Rental Listings and Property Manager Data

Pricing

from $0.66 / 1,000 rental listings

Go to Apify Store
AppFolio Scraper: Rental Listings and Property Manager Data

AppFolio Scraper: Rental Listings and Property Manager Data

Extract public AppFolio rental listings from authorized tenant listing URLs with normalized rent, beds, baths, availability, address, coordinates, photos, application links, and optional detail-page contacts.

Pricing

from $0.66 / 1,000 rental listings

Rating

0.0

(0)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

🏠 AppFolio Scraper: rental listings and property manager data

Turn public AppFolio listings into a ready-to-use rental inventory
Bring live listing pages into one consistent dataset with rent, room, location, pet, size, keyword, photo, and optional public property-manager filters.
🏠 Current listings
See rent and availability as published.
πŸ“ Location-ready
Use addresses and map coordinates for research.
πŸ“Έ Media and actions
Keep photos, applications, showings, and links together.
☎️ Public contacts
Add office and phone details from enriched pages.

Need a repeatable view of rental supply without copying listing details by hand? AppFolio Scraper turns authorized public listing pages into clean records for housing research, vacancy monitoring, lead workflows, and scheduled snapshots.

✨ Why use it?

  • Property managers can review current rental supply across several public listing pages in one dataset.
  • Housing researchers can compare rent, availability, property facts, addresses, and coordinates in a consistent shape.
  • Leasing teams can narrow results by rent, bedrooms, bathrooms, size, city, postal code, move-in date, pet policy, keywords, and application links.
  • Lead teams can keep public application, showing, contact, office, and phone details beside each listing when the source publishes them.
  • Operations teams can run the same source list again when they need a fresh snapshot.

⚠️ Use and source terms

Use this Actor only with AppFolio listing sources and data you are authorized to access. Public availability does not override source terms. Review the AppFolio listing terms, each source's access instructions, and your local requirements before running it.

The Actor does not require a login and does not access private customer accounts. It only returns information published on the supplied listing pages. Source availability and terms can change, so you are responsible for deciding whether a run is permitted.

🧭 How it works

STEP 1
Add listing pages
Provide one or more public AppFolio listing or detail URLs.
STEP 2
Set your target
Combine source filters with size, keyword, and application-link filters.
STEP 3
Use the dataset
Download structured listing records for research, workflows, or monitoring.

Detail enrichment is optional. Turn it on when you need descriptions, amenities, pet policy, public office details, or phone fields from listing pages that publish them.

πŸ’° Pricing

Pay per successful result. Empty runs cost nothing, and there are no subscriptions. When detail enrichment is enabled, each enriched result also includes a separate detail-enrichment charge because it requires an additional source page. The default run is intentionally bounded at 25 listings, with higher limits available through the input form.

⭐ Enjoying AppFolio Scraper?

⭐ ⭐ ⭐ ⭐ ⭐
A short review helps rental teams find a cleaner path from listing pages to usable property data.
A 5-star rating takes 10 seconds and helps other property managers, researchers, and lead teams find it. Your feedback also tells us what to build next.
β˜…Β Β Rate this Actor on Apify

πŸ“₯ Input

FieldTypeRequiredDescription
startUrlsarray of URLsNoPublic HTTPS AppFolio listing or detail URLs you are authorized to access. The form includes a sample source by default.
minRentintegerNoKeep listings at or above this published rent. Leave empty to include every rent level.
maxRentintegerNoKeep listings at or below this published rent. Leave empty to include every rent level.
minBedroomsintegerNoKeep listings with at least this many bedrooms. Studios count as zero bedrooms.
maxBedroomsintegerNoKeep listings with no more than this many bedrooms. Combine it with minBedrooms for a range.
minBathroomsintegerNoKeep listings with at least this many bathrooms.
maxBathroomsintegerNoKeep listings with no more than this many bathrooms. Combine it with minBathrooms for a range.
citiesarray of stringsNoKeep listings in these exact published city names. Add one city per row.
postalCodesarray of stringsNoKeep listings in these published postal codes. Add one code per row.
catPolicyenumNoChoose Any, Cats allowed, or Cats not allowed. Defaults to Any.
dogPolicyenumNoChoose Any, Dogs allowed, Small dogs allowed, or Dogs not allowed. Defaults to Any.
desiredMoveInstringNoPass a desired move-in date to the source filter. Leave empty when the date does not matter.
sortByenumNoChoose the source order: most recent, rent low to high, rent high to low, or bedrooms. Defaults to most recent.
minSqftintegerNoKeep listings with published square footage at or above this value.
maxSqftintegerNoKeep listings with published square footage at or below this value.
includeKeywordsarray of stringsNoKeep listings whose published text, amenities, appliances, or pet policy contains at least one term.
excludeKeywordsarray of stringsNoRemove listings whose published text, amenities, appliances, or pet policy contains any term.
requireApplicationUrlbooleanNoKeep only listings that publish a public application link. Defaults to false.
scrapeDetailsbooleanNoFetch optional description, amenities, pet policy, public office, phone, and action fields from each detail page. Defaults to false.
maxItemsintegerNoMaximum matching unique listings across all sources. Defaults to 25 and accepts values from 1 to 500.
maxPagesintegerNoMaximum listing pages to read from each source while looking for matches. Defaults to 10 and accepts values from 1 to 25.
requestDelayMsintegerNoMinimum wait between requests to the same source. Defaults to 10000 milliseconds and accepts values from 10000 to 60000.

The Actor respects the source's published access instructions and uses a minimum delay between requests. Free-plan runs are limited to 25 listings, 3 runs per rolling 24 hours, and a 30-minute wait between runs.

πŸ“Š Data table

FieldTypeDescription
platformstringSource platform identifier, set to appfolio.
idstringStable tenant and listing identifier.
listingIdstringListing identifier from the detail page.
tenantstringAppFolio tenant hostname.
urlstringPublic listing detail URL.
sourceUrlstringListing page used to discover the record.
sourceListingIdstringListing card or map identifier when published by the source.
titlestringPublished listing title.
descriptionstringDetail-page description when scrapeDetails is enabled and the source publishes one.
addressstringFull published address.
streetstringParsed street address.
citystringParsed city.
statestringParsed state or region.
zipstringParsed postal code.
latitudenumberPublished map latitude.
longitudenumberPublished map longitude.
rentnumberSingle published rent value when available.
rentMinnumberLower value of a published rent range.
rentMaxnumberUpper value of a published rent range.
rentFormattedstringOriginal published rent text.
currencystringCurrency inferred from the published rent symbol.
bedsnumberPublished bedroom count.
bathsnumberPublished bathroom count.
sqftnumberPublished square-footage value.
availablestringPublished availability text.
amenitiesarrayPublished amenity labels from an enriched detail page.
utilitiesstringPublished utilities information from an enriched detail page.
appliancesarrayPublished appliance labels from an enriched detail page.
petPolicyarrayPublished pet-policy labels from an enriched detail page.
imagestringPrimary published photo URL.
imagesarrayPublished photo URLs from the listing.
applyUrlstringPublic application URL when published.
showingUrlstringPublic showing-scheduling URL when published.
contactUrlstringPublic contact URL when published.
officeNamestringPublic property-management office name from an enriched detail page.
phonestringPublic property-management phone number from an enriched detail page.
scrapedAtstringISO timestamp for the extracted record.

🧾 Example record

This enriched example comes from a public AppFolio listing. Optional fields that the source does not publish are omitted.

{
"platform": "appfolio",
"id": "apg.appfolio.com:afef0c1a-9a36-48a5-9bae-de6400f67d37",
"tenant": "apg.appfolio.com",
"scrapedAt": "2026-09-20T05:23:57.260Z",
"listingId": "afef0c1a-9a36-48a5-9bae-de6400f67d37",
"url": "https://apg.appfolio.com/listings/detail/afef0c1a-9a36-48a5-9bae-de6400f67d37",
"sourceUrl": "https://apg.appfolio.com/listings",
"sourceListingId": "243",
"title": "Beautiful New Studio Close to Twitter",
"description": "Living at 1335 Folsom puts you in the middle of everything San Francisco has to offer. From theaters and museums to trendy breweries and farmers markets, weekly entertainment is all within walking distance.",
"address": "1335 Folsom St, Unit 306, San Francisco, CA 94103",
"street": "1335 Folsom St, Unit 306",
"city": "San Francisco",
"state": "CA",
"zip": "94103",
"latitude": 37.773184,
"longitude": -122.411916,
"rent": 3005,
"rentFormatted": "$3,005",
"currency": "USD",
"beds": 0,
"baths": 1,
"sqft": 402,
"available": "9/28/26",
"amenities": ["Balcony", "Roof Deck with BBQs", "Community Room"],
"utilities": "Tenant pays all utilities",
"appliances": ["Refrigerator", "Stove/Oven", "Microwave", "Dishwasher"],
"petPolicy": ["Cats allowed", "Small dogs allowed"],
"image": "https://images.cdn.appfolio.com/apg/images/f81048aa-6d3a-48ed-b161-5bc2a518ce8b/large.jpg",
"images": [
"https://images.cdn.appfolio.com/apg/images/f81048aa-6d3a-48ed-b161-5bc2a518ce8b/large.jpg",
"https://images.cdn.appfolio.com/apg/images/8425c189-a1ae-4891-a68d-c03684c14ecf/large.jpg",
"https://images.cdn.appfolio.com/apg/images/7de08553-4e9f-45f1-b497-4f8c8e6fa65c/large.jpg"
],
"applyUrl": "https://apg.appfolio.com/listings/rental_applications/new?listable_uid=afef0c1a-9a36-48a5-9bae-de6400f67d37&source=Website",
"showingUrl": "https://apg.appfolio.com/listings/showings/new?listable_uid=afef0c1a-9a36-48a5-9bae-de6400f67d37&source=Website",
"contactUrl": "https://apg.appfolio.com/listings/detail/afef0c1a-9a36-48a5-9bae-de6400f67d37/contact_us_form",
"officeName": "ATLAS PROPERTY GROUP",
"phone": "(415) 216-4945"
}

Missing source fields are omitted rather than replaced with placeholders.

❓ FAQ

Does it need a login?

No. It reads public AppFolio listing pages and does not access private customer accounts. Only provide sources and data you are authorized to access.

How fresh is the data?

Each run reads the supplied live listing pages. Rent, availability, photos, and contact details reflect what the source publishes at run time.

Can it extract private phone numbers?

No. Phone and office fields are returned only when the public detail page publishes them and scrapeDetails is enabled. The Actor does not open private contact walls or sign-in areas.

Which sources are supported?

Use public HTTPS AppFolio tenant pages under *.appfolio.com/listings, including listing pages with filters and public detail URLs. Other websites are rejected so the output stays within the Actor's supported source scope.

πŸ”— Other actors