Skip to content
    ↑↓ to choose · Enter to open

    · 16 min read

    Compass Real Estate Scraper: Up to 1,000 Free Results a Month (2026)

    By CrawlerBros Engineering Team

    Each listingDetail record provides 117 fields, including the full description, price history, tax assessment, and listing agent contact details. This scraper targets homes for sale and rent across every US market Compass operates in, such as Austin, Miami, and New York. You can pull high-resolution photos and floor plans without requiring a login or paid proxy. The output is structured into three distinct modes to separate general search results from deep property analysis and agent performance tracking.

    Try it: open Compass Real Estate Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Compass Real Estate Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Compass Real Estate Scraper a month, before run-start charges and platform usage.

    Compass Real Estate Scraper was last updated on 2026-07-27. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 734,650 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Compass Real Estate Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The maxItems control is the primary driver of your bill because charges are calculated per result written to the dataset. To minimize costs, verify your location string and filters like propertyType on a run limited to 10 results before removing the cap. Since there is a run-start fee for every attempt, avoid starting many small runs and instead group multiple listing URLs into a single batch.

    How do you run Compass Real Estate Scraper from the API?

    The schema marks 1 of its 24 controls as required: mode. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~compass-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search"}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search"
    }
    
    run = client.actor("crawlerbros~compass-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search"
    }
    
    const run = await client.actor('crawlerbros~compass-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Compass Real Estate Scraper inputs matter, and which can you skip?

    The mode control is the only required input and determines whether you get high-level search cards or deep listing details. For targeted research, use the location field with a specific City, ST format to ensure the scraper maps to the correct market slug. Most users should leave the amenities array empty on their first run to avoid over-filtering the results before they understand the local inventory.

    • mode (string): Browse listings for a location, fetch full details for specific listing URLs, or fetch agent profiles (bio + active/sold listings). Default: "search".
    • location (string): City, neighborhood, or ZIP to browse. Accepts a plain name like Austin, TX / Miami Beach, FL, or a Compass URL slug like austin-tx / austin-tx-78734. A ZIP code alone (e.g. 78734) is not enough - append it to a city slug (austin-tx-78734) or just use City, ST. Default: "Austin, TX".
    • listingCategory (string): Browse homes for sale, or homes for rent. Default: "forSale".
    • propertyType (string): Restrict results to a property type. Default: "any".
    • minBeds (string): Only show listings with at least this many bedrooms. Default: "any".
    • minPrice (integer): Drop listings priced below this amount (sale price or monthly rent).
    • maxPrice (integer): Drop listings priced above this amount (sale price or monthly rent).
    • minBaths (number): Drop listings with fewer bathrooms than this (e.g. 1.5).
    • minSqft (integer): Drop listings smaller than this many square feet.
    • maxSqft (integer): Drop listings larger than this many square feet.
    • openHouseOnly (boolean): Only show listings with a scheduled open house. Default: false.
    • comingSoonOnly (boolean): Only show listings marked "Coming Soon" (not yet officially on market). Default: false.

    The other 12 controls, with their defaults, are listed in the input schema on Compass Real Estate Scraper on Apify.

    Fixed-choice controls: mode accepts search (Search listings by location), listingDetail (Get full details for listing URLs), agentProfile (Get agent profiles (bio, active & sold listings)); listingCategory accepts forSale (For sale), forRent (For rent); propertyType accepts any (Any type), singleFamily (Single-family homes), condos, townhomes, multiFamily (Multi-family), land, luxury, coop (Co-op); minBeds accepts any, 1 (1+), 2 (2+), 3 (3+), 4 (4+), 5 (5+), 6 (6+).

    What does Compass Real Estate Scraper return?

    The output provides comprehensive MLS metadata like taxRate, schoolDistricts, and associationFeeIncludes, which are essential for financial modeling. It conspicuously does not return internal agent notes or private seller contact information, as these are not part of the public listing sheets.

    Search mode

    • listingId, sourceUrl
    • price, priceFormatted
    • address, street, city, state, zipCode, latitude, longitude
    • bedrooms, bathrooms, squareFeet, lotSize, lotAcres
    • propertyType, propertyTypes[] (present only when the listing spans more than one type, e.g. a multi-family + land combo), status, badges[]
    • listingCourtesy (MLS broker attribution line shown on the search card, e.g. Listing Courtesy of Corcoran Group; absent on Compass Platform Exclusive/own listings)
    • images[], primaryImage, floorPlans[]
    • listingCategory (forSale / forRent)
    • recordType: "listing", scrapedAt

    Listing-detail mode (adds)

    • description
    • mlsNumber (from the listing's own MLS # field, falling back to its key-details table when the primary field is absent), mlsStatus, parcelNumber, feedListingId (the listing ID as issued by the source MLS/data feed, distinct from Compass's own listingId), compassPropertyId (stable per-property identifier that persists across re-listings, distinct from listingId)
    • neighborhood, county, schoolDistricts[], elementarySchool, middleSchool, highSchool
    • nearbySchools[] - name, level (Elementary/Middle/High), type, grades, GreatSchools rating, distance, URL
    • propertyTypes[] (present only when the listing spans more than one type)
    • fullBathrooms, halfBathrooms, stories, lotSizeSquareFeet (numeric lot size in square feet, alongside the human-readable lotSize string), pricePerSquareFoot, parkingSpaces, garageSpaces, parkingFeatures[] (e.g. Attached, Assigned, Driveway, Off Street)
    • yearBuilt, amenities[], outdoorSpace[], waterfront, view, subdivisionName
    • daysOnMarket, cumulativeDaysOnMarket (days on market across all re-listings of the same property, not just the current listing), taxes, hoaFees, condoFees
    • mlsType (e.g. Residential / Single Family Residence), propertyCondition (e.g. Updated Remodeled), levels (e.g. One, Two)
    • lotSizeDimensions (e.g. 60' x 115'), mainLevelBedrooms, primaryBedroomOnMainLevel (boolean)
    • hasPool (boolean), poolFeatures, spaFeatures, hasSpa (boolean), isWaterfront (boolean - authoritative MLS waterfront flag, distinct from the free-text waterfront field above)
    • waterAccessDescription (e.g. Public), taxLot, taxBlock
    • furnished (e.g. Furnished, Partially Furnished, Unfurnished - mostly on rentals)
    • petPolicy, petsAllowedDetails, availableDate, leaseTerm, leaseTermMinMonths, leaseTermMaxMonths, securityDeposit (for-rent listings only)
    • tenantPays[] (utilities the tenant is responsible for, e.g. Electricity, Internet), moveInCosts[] (e.g. Application Fee, First Month Rent, Security Deposit), tenantPaysDetails (free-text cost breakdown with concrete dollar amounts, when disclosed - for-rent listings only)
    • taxAssessment - taxYear, annualTax, monthlyTax, assessedValue, marketValue
    • priceHistory[] - chronological listing/pending/sold events with date, status, price
    • openHouseSchedule[] - start/end times (and isVirtual flag) for scheduled open houses
    • agentName, agentEmail, agentPhone, agentProfileUrl, agentCompany, agentPhotoUrl, agentLicenseNumber
    • coListingAgents[] - additional co-listing/team agents beyond the primary (name, email, phone, company, licenseNumber, role e.g. Alternative Listing Agent); common on team-listed luxury condos, absent on single-agent listings
    • buyerAgentCompensation (e.g. 3% - the commission offered to a cooperating buyer's agent; only present when the broker discloses it on the MLS record)
    • isSeniorCommunity (boolean - age-restricted/55+ active-adult community flag)
    • mlsSource (the MLS/data-feed the listing was sourced from, e.g. ACTRIS), listingCourtesy (MLS broker attribution line; absent on Compass Platform Exclusive listings), isOffMls (boolean)
    • listedAt, updatedAt, lastSaleDate (the date this property last sold, from prior transaction history - distinct from priceHistory)
    • elementarySchoolDistrict, middleSchoolDistrict, highSchoolDistrict (district names, distinct from the school names above)
    • interiorFeatures[], exteriorFeatures[], appliances[], flooring[], constructionMaterials[], communityFeatures[], lotFeatures[], securityFeatures[] - from the listing's full categorized MLS feature sheet
    • roofType, fencing, basement, heatingType[], coolingType[], sewerType, utilities[]
    • coveredParkingSpaces, hasGarage (boolean)
    • associationName, associationFeeIncludes[], taxRate (e.g. 2.1%)
    • directions (driving directions text, when the MLS record includes one)
    • virtualTourUrl - a real, verified third-party virtual-tour link (only emitted when the underlying field is an actual URL)
    • buildingFeatures[], buildingAttendance[] (e.g. doorman/lobby-attendant type - condo/co-op buildings)
    • rentIncludes[], minLeaseMonths, depositAmount, leaseType (for-rent listings only)
    • badges[] (corner badges, e.g. Coming Soon, New, Listed By Compass)
    • buildingName, buildingFloors, buildingUnits (condo/co-op buildings only - the building as a whole, distinct from the unit's own stories)
    • unitFloor (the unit's own floor number within the building), buildingPetPolicy, buildingAge (e.g. Pre-war, Post-war), buildingType (e.g. Lowrise, Midrise, Highrise)
    • recordType: "listingDetail" (distinct from search mode's "listing", so you can tell the two record shapes apart when both are in the same dataset)

    Agent-profile mode

    • agentName, title, phone, email, photoUrl, bio, specialties, market, isTeam (boolean - true when the profile represents a team page rather than a single agent)
    • activeListingsCount, activeListings[] (address, price, beds/baths/sqft, status, photo, URL)
    • closedDealsCount, closedListings[] (sold comps - same compact shape as activeListings)
    • sourceUrl, recordType: "agentProfile", scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Compass Real Estate Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set mode to search and enter a target market like Austin, TX into the location field to browse general listings.
    2. Review the search output to confirm core listingId and address fields are populated before running a large batch.
    3. Apply a maxPrice or minBeds filter to narrow the results if your target market is larger than the 1,200 item pagination limit.
    4. Extract listingUrls from your search results and switch the mode to listingDetail to fetch deep property data.
    5. Verify that the listingDetail records contain the expanded propertyCondition, taxAssessment, and priceHistory arrays you need.
    6. Switch the mode to agentProfile and paste URLs into the agentUrls array to collect agentName, bio, and closedDealsCount.
    7. Check the scrapedAt field to ensure the data reflects the most recent Compass search index for your chosen region.

    How do you apply it? Three worked playbooks

    These are Compass Real Estate Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Real estate market research

    Outcome: Track pricing and inventory across cities/neighborhoods

    Configure: Set mode to "search", listingCategory to "forSale", and location to a city name like "Miami Beach, FL".

    Working method: Start by running in search mode with a specific location and listingCategory. Review the initial dataset to understand the market structure. Refine your query by adding propertyType or minBeds filters to segment the data. Combine results from narrower queries if a single one exceeds 1,200 listings to fully cover large markets.

    Deliverable: A dataset of property listings with prices and core attributes, segmented by city or neighborhood, suitable for trend analysis.

    Stop condition: The run terminates with zero new unique listing IDs despite the totalItems count indicating more results exist.

    Use case 2: Lead generation

    Outcome: Pull listing-agent contact details for outreach

    Configure: Set mode to "listingDetail" and populate the listingUrls array with direct Compass property links.

    Working method: Begin with a broad search to identify initial listings in your target areas, capturing each sourceUrl. Transition to listingDetail mode using these URLs to collect agentEmail and agentPhone for outreach. Prioritize newListingOnly or comingSoonOnly to target fresh opportunities for agents who need new clients.

    Deliverable: A list of records containing agentName, agentEmail, agentPhone, and agentLicenseNumber for the specified properties.

    Stop condition: The agentEmail field is null across more than fifty percent of the returned listingDetail records.

    Use case 3: Investment analysis

    Outcome: Filter by price/sqft/beds to find candidate properties, use priceHistory/taxAssessment for deeper diligence

    Configure: Set mode to "search", soldOnly to true, and use minPrice to filter for relevant comparable sales.

    Working method: First, identify a market location and set clear investment criteria using filters like minPrice/maxPrice and minSqft in search mode. Collect these initial candidate listings. For each promising candidate, fetch full details in listingDetail mode to examine priceHistory, taxAssessment, and nearbySchools for thorough due diligence. Prioritize properties with complete historical data to ensure robust analysis.

    Deliverable: A spreadsheet of candidate properties including the yearBuilt, total annualTax, and a full chronological priceHistory array.

    Stop condition: The priceHistory array is empty for properties that have clear evidence of prior sales on the primary market.

    What breaks, and how do you design around it?

    When a market contains more than 1,200 listings, use the minPrice and maxPrice controls to split your search into several smaller price bands. If you encounter a rental listing, remember that the soldOnly filter will not return data because Compass only exposes sold status for for-sale homes.

    When should you not use Compass Real Estate Scraper?

    Do not use this Actor if you require data from markets outside the United States where Compass has no brokerage presence. If your project demands exhaustive coverage of a specific local market not served by Compass, use the Century 21 Real Estate Scraper or the HomeFinder Real Estate Scraper instead. This tool is also inappropriate for tracking commercial property trends; for those datasets, the LoopNet.com Commercial Real Estate Scraper is the specialized alternative. If you need to bypass the 1,200 item limit without manual segmentation, you should look for an API-based service rather than a scraper that mimics the SEO pagination of the public site.

    What should you check before trusting the output?

    • Verify that pricePerSquareFoot is a non-zero number for all residential listings in listingDetail mode.
    • Confirm that agentEmail contains a valid domain suffix when the field is present in the output.
    • Check that the records in search mode contain at least one valid URL in the images array.
    • Ensure that listingCourtesy is present for MLS-sourced listings and empty for Compass Platform Exclusives.
    • Monitor that daysOnMarket is a non-negative integer for all active listings.
    • Verify that floorPlans images are correctly isolated from the primary room gallery in the floorPlans array.

    None of this proves a record is correct. It gives a scheduled Compass Real Estate Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the cost per 1,000 results?

    On the free-plan price, you pay $5.00 per 1,000 results. This is calculated as $0.005 per result written to your dataset. Note that Apify also bills for platform usage during the run, and there is a run-start fee every time you begin a new extraction, regardless of the result count.

    How many results can I get for free?

    This allows you to test the search, listingDetail, and agentProfile modes extensively to see if the 117 detail fields meet your project requirements before committing to a paid plan.

    How does the location input work?

    The location field accepts plain text like Austin, TX or Miami Beach, FL. You can also paste a slug directly, such as austin-tx-78734, if you want to target a very specific ZIP code or neighborhood already known from their website.

    Is the listing agent contact information always included?

    The agentName, agentEmail, and agentPhone fields are extracted from listingDetail mode and agentProfile mode. These are only included if the listing broker has publicly disclosed them on the Compass platform. If the contact information is hidden behind a login or omitted by the broker, these fields will be empty in the output.

    How many items can a single search return?

    Compass stops serving new listings after roughly 1,200 results per query, which is about 20 pages. This is a limitation of the Compass search index itself. To get more results for a massive market, you should use filters like minBeds or maxPrice to create multiple narrower runs.

    Where to go next

    When you are ready to run it, open Compass Real Estate Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Compass Real Estate Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-05.

    • Actor last updated by its maintainers on 2026-07-27.

    • Run outcome figures cover the 30 day public window ending 2026-10-05.

    • Compass Real Estate Scraper on Apify

    Featured actors

    Compass Real Estate Scraper

    Scrape Compass.com real estate listings - homes for sale and for rent across US markets. Get price, beds/baths, square footage, lot size, photos, listing agent, and full property details by city or by listing URL.

    Run on Apify ↗