Price Your Airbnb Against Nearby Comps Every Week with Claude
Set up a weekly Claude Cowork scheduled task that runs the Airbnb Scraper API on Apify for about 50 comparable listings near yours. Claude prices the next four weekends against them, works out each comp's calendar-implied occupancy, pulls the amenities guests praise from their reviews, and writes a one-page pricing memo. A full weekly run costs about $1.27 in Apify usage on the free plan, or about $0.79 on Starter.
"How should I price my Airbnb?" has one honest answer: the same way the listings guests compare you with are priced, on the same dates. That comp set changes every week. New listings open, neighbours drop their rates for a quiet weekend, and a festival fills the calendar three streets over. This post sets up a Monday-morning memo that tracks it for you, with no code.
Let Claude set it up for you
Paste this into a new Cowork task. Claude asks for your details one at a time, runs a small priced test, and then builds the weekly task with you. The rest of this post explains what it is doing at each step.
Claude interviews you, checks the Apify connector, runs a priced test on a few comps, then creates the weekly scheduled task after you confirm.
- Asks for your listing, area, comp filters and currency, one question at a time
- Checks that the Apify connector is connected and tells you how to add it if not
- Runs a five-listing test and shows you the real cost
- Drafts the weekly task and the memo format, then waits for your OK before scheduling
Help me set up a weekly Airbnb pricing memo that compares my listing with
nearby comparable listings. Work through this with me step by step.
1. Interview me. Ask one question at a time and wait for each answer:
- my Airbnb listing URL
- the neighbourhood and city to search
- what counts as a comp: room type (Entire home/apt, Private room,
Shared room or Hotel room), minimum bedrooms, number of adults
- how far from my listing a comp can be (default 1.5 km) and how many
comps to keep (default 50)
- my currency, and which day and time I want the memo
- whether my Apify plan is Free or paid, so you can estimate cost
2. Check your tools. Confirm you can use the Apify connector's call-actor
and get-dataset-items tools. If you can't, stop and tell me to add
Apify's MCP server as a custom connector in Cowork (Customize, then
Connectors) and sign in to Apify, then wait until I say it's done.
3. Run a small test before anything else. Tell me what it will cost
first, then run the Apify Actor codepoetry/airbnb-scraper with my
area in location_queries, my filters (min_bedrooms, room_types,
adults), my currency, check_in/check_out for the next Friday-to-Sunday
stay, and max_listings 5. Run it once more with start_urls set to my
listing and the same dates. Show me the five comps (name,
price_per_night, occupancy_rate, distance from my listing, and whether
is_exact_location is true) and the actual cost of both runs.
4. Once I approve the test, draft the weekly scheduled task:
- each run prices the next four Friday-to-Sunday stays, with
max_listings 80, calendar_months 3, and reviews on (20 per listing)
for the first weekend only
- keep comps within my distance of my listing, closest N only
- per weekend: comps' P25, median and P75 price_per_night, my rate,
and how many comps have both nights blocked
- flag weekends where most comps are blocked and I'm at or below the
median; exclude comps with 21+ consecutive blocked days
- list amenities that guests praise in the ten best-rated comps' reviews,
and mark which ones my listing lacks
- output a one-page memo with a table per weekend and three
recommended price changes
- label occupancy as calendar-implied, an upper bound on bookings, and
never invent a number that isn't in the data
Show me the estimated weekly cost on my plan.
5. Ask me to confirm, then create the scheduled task at the cadence I
chose. Don't run or schedule anything that spends money without asking
me first.
Claude asks before each change it makes. Read each step before you approve it.
What the weekly memo answers
Each Monday the task produces a short memo with four parts:
- Your rate against the comp set, per weekend. For each of the next four Friday-to-Sunday stays: the comps' median and 25th/75th percentile nightly rate, and where yours sits.
- Weekends you are underpriced. Dates where most comps are already blocked while you are open and cheaper than the median. These are the weekends to raise your rate.
- Comp occupancy. How full the comparable listings' calendars are, read from the calendars themselves rather than estimated from review counts.
- Amenities guests praise. What reviews of the best-rated comps keep mentioning, checked against what your listing offers.
You still change your prices yourself. That is the main difference from dedicated dynamic-pricing tools such as PriceLabs, Beyond or Wheelhouse, which sync rates to your calendar automatically and model demand from far more data than one weekly scrape. If you manage several properties and want prices to move daily without you, those tools are the better fit. This workflow suits a host with one or a few listings who wants to understand their market and make the call themselves.
What you need
- A paid Claude plan with Cowork in Claude Desktop. Scheduled tasks are available on Pro, Max, Team and Enterprise (Anthropic's scheduled-task help article).
- An Apify account with Apify's MCP server added to Cowork as a custom connector. The Cowork + Apify setup guide takes about five minutes. Apify's free plan includes $5 of monthly usage.
- The Airbnb Scraper API Actor. Each full-detail listing carries its nightly rate and stay total as numbers, all six rating categories, the amenity list, coordinates, a day-by-day availability calendar and, if you switch them on, guest reviews.
- Your own listing's Airbnb URL.
Step 1: Define the comp set
A comp is a listing a guest would book instead of yours: same area, same size, same kind of space, same party. The scraper has no radius input, so you build the set in two passes.
Pass one, in the scraper input. Search your neighbourhood and filter to listings like yours:
| Input | What to set | Why |
|---|---|---|
location_queries | Your neighbourhood, e.g. "Ribeira, Porto" | Each query is a separate search; all results land in one dataset |
min_bedrooms, room_types, property_types | Match your listing | An entire 2-bedroom flat does not compete with a private room |
adults | Your typical party | Guest count changes both price and availability |
check_in, check_out | One weekend stay | Prices are quoted for exactly these nights |
currency | Your payout currency | Every price comes back converted |
max_listings | About 80 | Leaves headroom for pass two; the default is 20 |
Pass two, in Claude. Every record has latitude and longitude, so Claude can keep only the listings within, say, 1.5 km of yours and stop at the 50 closest. One caveat: Airbnb often shows a privacy circle rather than the exact spot. Each record's is_exact_location field says which you got, so treat the radius as approximate.
Step 2: Price the weekends you care about
The calendar in each record has no per-day rate. Airbnb quotes prices by stay, so a listing has one price_per_night for the check_in/check_out you asked about and nothing for the other dates. To compare four weekends you need four runs, one per stay window.
That is fine in practice. The task prompt below asks Claude to run the scraper once for each of the next four Friday-to-Sunday stays. Your own listing goes in as one more small run using start_urls with the same dates. A run takes either a location or start URLs, not both, and listings fetched by URL are only priced when you give dates.
If a comp shows no price for a weekend, it is usually not bookable for those nights, which tells you something too.
Step 3: Read occupancy from the calendar
This is the part most "how to price my Airbnb" advice skips, and it is what separates a comp analysis from a list of asking prices. Nightly rates tell you what the market advertises. Occupancy tells you what it actually books.
Each full-detail record includes the day-by-day availability calendar for calendar_months ahead (3 by default, up to 12), plus four summary fields computed from today to the end of that window:
availability_days_total: days in the window.availability_days_available: days still open.blocked_days: days not available.occupancy_rate: blocked days divided by total days.
Calendar-implied occupancy is that last number: the share of future nights that are no longer open. The method has one weakness you must keep in mind. Airbnb does not say why a day is blocked. A blocked night is either a booking or the host closing the date for their own use, maintenance or a minimum-stay gap. So:
- Treat it as an upper bound, not a booking count. A listing showing 0.90 is not necessarily 90% booked.
- Compare like with like. The number is most useful across listings measured the same way on the same day. If your comps sit at 0.70 for the next six weeks and you sit at 0.35, you are probably priced above the market, whatever the cause of each individual block.
- Look at specific dates, not just the average. For each target weekend, Claude counts how many comps have both nights blocked. When 40 of 50 comps are closed for a Saturday and you are still open at the median rate, there is demand you are not charging for.
- Watch for long blocks. Thirty consecutive blocked days on one comp is more likely an owner stay or a listing that has gone dormant than a run of bookings. Ask Claude to flag them and leave them out of the median.
Calendars also carry each date's min_nights. A comp that requires three nights on a weekend is not competing for a two-night Friday-to-Sunday guest, which is another thing worth noting in the memo.
Investors comparing short- and long-term letting before they buy can use the same occupancy data in an STR vs LTR yield analysis.
Step 4: Mine comp reviews for amenities
Turn on include_reviews with max_reviews_per_listing set to 20 for the reviews pass. Reviews bill per review, so do this in only one of the four weekly runs. Claude then reads the reviews of the ten best-rated comps and lists the amenities and details guests mention by name, such as a fast workspace, blackout curtains, parking or a late check-in. It checks each against your listing's amenity flags (amenity_wifi, amenity_workspace, amenity_parking and so on).
The six rating categories help here too. If the comps beat you on value but not on cleanliness, the issue is price, not the flat. If they beat you on checkin, look at your self check-in setup before touching the rate.
Step 5: Schedule it
If you skipped the setup prompt above, create the task by hand: in Cowork, click Scheduled in the sidebar, then New task and Set up manually. Set the frequency to weekly, then paste a prompt like this one and replace the bracketed parts. New task → Create with Claude works too: Claude drafts the task with you.
Paste it as the prompt of a weekly Cowork scheduled task.
Every Monday, write my Airbnb pricing memo.
My listing: [https://www.airbnb.com/rooms/YOUR_ID]
Area: [Ribeira, Porto]. Comps: [entire home, 2+ bedrooms, 2 adults], within
1.5 km of my listing, up to 50 listings. Currency: [EUR].
1. For each of the next four Friday-to-Sunday stays, run the Apify Actor
codepoetry/airbnb-scraper with location_queries ["[Ribeira, Porto]"],
those check_in/check_out dates, min_bedrooms [2], room_types
["Entire home/apt"], adults [2], max_listings 80, calendar_months 3.
Turn on include_reviews with max_reviews_per_listing 20 for the first
weekend only.
2. Run it once more per weekend with start_urls set to my listing.
3. Keep comps within 1.5 km of my listing's coordinates (note when
is_exact_location is false), closest 50.
4. Per weekend: comps' P25 / median / P75 price_per_night, my rate, and how
many comps have both nights blocked.
5. Flag weekends where most comps are blocked and I am open at or below
the median. Flag comps with 21+ consecutive blocked days and exclude them
from the medians.
6. From the reviews of the ten best-rated comps, list amenities guests
praise, and mark which ones my listing lacks.
7. Output a one-page memo with a table per weekend and three recommended
price changes. Say which numbers are calendar-implied occupancy, an upper
bound on bookings. Never invent a number that is not in the data.
Scheduled tasks run remotely on their cadence, even when your computer is asleep, as long as the task does not depend on local files or apps (Anthropic's help article). The Cowork scheduled tasks guide covers cadences, limits and how to check a run.
Run the task once by hand before you trust the schedule. Read the first memo against a few listings on Airbnb itself to confirm the comp filter caught what you would have picked.
What the test run returns
This is real output from a test run on 2026-10-21, the same five-listing test the setup prompt runs. Input: location_queries ["Ribeira, Porto"], room_types ["Entire home/apt"], min_bedrooms 1, adults 2, the stay from 23 to 25 October 2026, currency EUR, max_listings 5, calendar_months 3, reviews on with max_reviews_per_listing 3. One of the five listings stands in for "my listing" and was also fetched on its own through start_urls with the same dates, which returned the same €91 rate. Listing names and host and reviewer names are removed.
| Listing | Distance from mine | price_per_night | occupancy_rate | blocked_days | is_exact_location | Open 23–24 Oct |
|---|---|---|---|---|---|---|
| Mine (1 bedroom) | 0 km | €91.00 | 0.44 | 45 | false | yes |
| Comp A (1 bedroom) | 0.78 km | €194.50 | 0.14 | 14 | true | yes |
| Comp B (1 bedroom) | 0.82 km | €134.50 | 0.27 | 28 | true | yes |
| Comp C (1 bedroom) | 0.89 km | €88.20 | 0.53 | 55 | true | yes |
| Comp D (2 bedrooms) | 0.91 km | €143.00 | 0.17 | 17 | true | yes |
What this small sample already shows:
- The calendar window is longer than "3 months" suggests. Every record had
availability_days_total103: from the run date (21 October) to the end of January, because the window starts in the current month and counts from today. - Price and occupancy pull in opposite directions. The two cheapest listings (€88 and €91) have the fullest calendars, and the most expensive (€194.50) has the emptiest. That is the trade-off the memo is there to show you, and it needs the full 50-comp set before you act on it.
- Distance is approximate for some listings. "Mine" has
is_exact_locationfalse, so its coordinates are Airbnb's privacy circle, and every distance in the table carries that error. - All four comps were open for the weekend, so nothing was flagged as underpriced. In a busy week the "Open" column fills with "no", and the comps still showing a price are the leftovers. Their median is then a floor rather than the market rate. Ask Claude to say so whenever fewer than half the comps return a price.
- Reviews skew to location. Of the 15 reviews pulled (3 per listing), location came up in most of them. The one amenity guests named was air conditioning, twice, both times about "my" listing, one of them during a hot spell. With 20 reviews from 10 comps the amenity list gets more useful.
The test billed 5 listing events, 15 review events and 1 run start, plus 1 listing and 1 run start for the start_urls check. At the free-plan prices below, the two runs together come to about 2 cents.
What it costs
The scraper bills per event, with compute and proxies included. Prices from 22 October 2026, read from the Actor's pricing on api.apify.com:
| Event | Free plan | Starter | Scale | Business and above |
|---|---|---|---|---|
| Full-detail listing (with calendar) | $3.00 / 1,000 | $1.50 / 1,000 | $1.10 / 1,000 | $0.75 / 1,000 |
| Guest review | $0.30 / 1,000 | $0.30 / 1,000 | $0.30 / 1,000 | $0.30 / 1,000 |
| Run start | $0.0001 | $0.0001 | $0.0001 | $0.0001 |
One weekly run of the task above is up to 320 comp listings (4 weekends × 80), 4 listings for your own place, up to 1,000 reviews (50 comps × 20, first weekend only) and 8 run starts:
- Free plan: 324 × $0.003 + 1,000 × $0.0003 + 8 × $0.0001 ≈ $1.27 per week, about $5.50 a month. That is just over the free plan's $5 monthly credit, so drop
max_listingsto 60 or pull reviews every other week. - Starter: 324 × $0.0015 + $0.30 + $0.0008 ≈ $0.79 per week.
Those are ceilings. Searches that return fewer than 80 listings bill fewer, and failed listings are not billed at all. Cowork usage counts against your Claude plan's limits as usual.
Before you rely on it
- Occupancy is an upper bound. Repeat it to yourself every Monday.
- Where you browse from changes the result. Airbnb ranks listings and converts prices differently by visitor location. Keep
currencyand the scraper'sproxy_countryfixed from week to week, or the numbers are not comparable. - This is market research, not an appraisal. It tells you what nearby listings ask and how full their calendars look, not what your property will earn.
- Terms and law. Reading public listing data for your own pricing decisions is common practice, but check Airbnb's terms and your local rules. The web scraping legality guide covers the general picture.
If you want the same data in Python instead of Cowork, for example to build your own dashboard, the Airbnb prices, reviews and availability walkthrough runs the same Actor from code with a per-event bill. To compare it with the other Airbnb Actors on the Store, see the best Airbnb scrapers roundup. More prompts for hosts and investors are in Claude prompts that use live web data.
Search your neighbourhood with the same bedroom count, room type and guest count as your listing, then keep only listings within a short distance of yours. The Airbnb Scraper API on Apify filters by bedrooms, room and property type and guests, and returns coordinates for each listing so Claude can apply the distance filter. Use the same check-in and check-out dates for every listing, because Airbnb prices by stay.
Count the blocked days in a listing's future calendar and divide by the total days in the window. The Airbnb Scraper API returns this as occupancy_rate, alongside blocked_days and availability_days_total. Airbnb does not say whether a blocked day is a booking or the host closing the date, so treat calendar-implied occupancy as an upper bound on bookings and use it to compare listings measured the same way.
Yes. Create a weekly Cowork scheduled task with a prompt that runs the Airbnb scraper through Apify's MCP connector and writes a pricing memo. Scheduled tasks are on all paid Claude plans and run remotely on their cadence, even when your computer is asleep, as long as the task does not need local files or apps. You still change your Airbnb prices yourself.
On Apify's free plan, full-detail listings cost $3.00 per 1,000 and reviews $0.30 per 1,000 from 22 October 2026. Pricing four weekends against 80 candidate comps with 1,000 reviews costs about $1.27 per week on the free plan and about $0.79 on Starter. Fewer listings or reviews every other week keeps it inside the free $5 monthly credit.
Not for most multi-property hosts. Dedicated dynamic-pricing tools update your Airbnb rates automatically and model demand from much larger datasets. A weekly Claude memo suits a host with one or a few listings who wants to see the comp set and make the pricing call themselves.
