kestrel Apify actors — documentation
30 scrapers for travel prices, guest reviews, ecommerce and app stores, each one an Apify actor. Every actor bills per delivered row: rows a filter removed, empty runs and failed targets are free. Every date input takes a relative value like 30 days, so a schedule never goes stale, and none of them needs an API key on the site being read. Each page below is the full reference for one actor — every input, every output field, a real row, working code and its honest limits.
Start here
Install the client, set your Apify token, call an actor by name:
pip install apify-client # or: npm i apify-client
export APIFY_TOKEN=... # console.apify.com/account/integrations
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kestrel/agoda-reviews-scraper").call(run_input={
"hotelNames": ["Park Hyatt Tokyo"], "maxReviewsPerHotel": 200,
"reviewsSort": "most_recent",
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["type"] == "review":
print(row["rating"], row["reviewer_country"], row["text"][:80])
The same call in JavaScript and curl, for every actor, is in the examples repository — together with importable n8n workflows.
How billing works
Every actor here is pay-per-event, and the event is a delivered row. Three consequences worth knowing before you plan a job:
- Filters run before billing. A complaints feed that reads 300 reviews and keeps the 8 below your rating ceiling bills 8 rows. The status row still reports how many were filtered.
- Nothing is charged for nothing. Free context rows (the hotel, listing, product or company row), status rows, targets with no data, unknown ids, duplicate inputs and failed targets are all free.
- Charged equals delivered. When a run reaches its spending limit it stops delivering rather than writing rows it could not charge for, so the dataset and the invoice agree.
Per-row prices differ by source and are listed on each actor page, and on the pricing tab of its Apify listing. The cheapest row in the suite is a Trustpilot review; the most expensive is a rate-parity row that compares every booking site for one property.
Hotel & flight prices
| Actor documentation | What it returns | Price per row | Apify listing |
|---|---|---|---|
| Google Hotels Prices Scraper | Hotel prices from Google Hotels for exact dates and guests: lowest nightly rate and stay total per hotel, plus every booking site’s rate (Booking.com, Expedia, Agoda, official site). Track prices daily, check rate parity, build price history. Pay per priced row. | hotel $0.004, offer $0.002 | apify.com/kestrel/google-hotels-prices |
| Hotel Rate Parity Checker | Hotel rate parity checker on Google Hotels prices: one row per property and stay with every OTA and the official site side by side (Booking.com, Expedia, Agoda, Hotels.com, Trip.com), the cheapest source, the spread and how far direct is undercut. Rate shopping for revenue managers. Pay per row. | parity $0.01 | apify.com/kestrel/hotel-rate-parity |
| Hotel Price Tracker | Hotel price tracker on Google Hotels: for each property and check-in date in a window, one row with the lowest rate across every booking site and the official site, the cheapest source and its link. Daily schedules build hotel price history; maxPrice alerts filter before billing. Pay per row. | rate $0.004 | apify.com/kestrel/hotel-price-tracker |
| Booking.com Scraper | Booking.com hotel prices for exact dates and guests: every property in a destination or a list of hotels, each with its stay total and nightly price, taxes, free-cancellation and breakfast flags, stars, review score, location and optional room rates. No browser, no login. Pay per priced hotel. | hotel $0.004, room $0.002 | apify.com/kestrel/booking-prices-scraper |
| Agoda Prices Scraper | Agoda hotel prices for exact dates and guests: every property in a destination or the hotels you name, with the cheapest nightly and total price, taxes, cancellation terms, stars, guest score and location. Sold-out and filtered hotels are free. Pay per priced hotel. | hotel $0.004, calendar_day $0.002 | apify.com/kestrel/agoda-prices-scraper |
| Airbnb Scraper | Airbnb scraper for prices and availability: search a place or paste Airbnb URLs and get each listing’s price for your dates and guests, plus up to 24 months of availability calendar with occupancy, listing details and reviews. No login, no Airbnb API key. Pay per row; unknown places are free. | listing $0.005, calendar_month $0.002, review $0.003 | apify.com/kestrel/airbnb-prices-calendar |
| Airbnb Occupancy Rate Scraper | Airbnb occupancy rate per listing and month from the public availability calendar, with a sampled nightly rate (ADR proxy) for each month. Search a place or give listing ids; get days available, days blocked or booked, occupancy % and the rate. Short term rental data at a fraction of a cent per row. | occupancy $0.002 | apify.com/kestrel/airbnb-occupancy-scraper |
| Google Flights Scraper | Flight prices from Google Flights for exact dates, cabin and passengers: every itinerary with price, airline, times, duration, stops, layovers and CO2. One-way, round trip, date sweeps for the cheapest day. Pay per itinerary row. | flight $0.005 | apify.com/kestrel/google-flights-prices |
| Flight Price Tracker | Flight price tracker for Google Flights: the cheapest fare for every departure day in your window, one row per day with price, airline, stops and times, ranked so the cheapest day to fly is row one. Set a max price and only days under it are delivered and billed. Pay per fare row. | fare $0.004 | apify.com/kestrel/flight-price-tracker |
Guest & customer reviews
| Actor documentation | What it returns | Price per row | Apify listing |
|---|---|---|---|
| TripAdvisor Reviews Scraper | Every TripAdvisor review of any hotel: 1-5 bubbles, title, full text, six sub-ratings, stay date, trip type, reviewer, photos and the management response, in up to 30 site languages. Give TripAdvisor URLs, location ids or hotel names. No browser, no login. Pay per review. | review $0.005 | apify.com/kestrel/tripadvisor-reviews-scraper |
| TripAdvisor Restaurant Reviews Scraper | Every TripAdvisor review of a restaurant or attraction: 1-5 bubbles, full text, food/service/value/atmosphere sub-ratings, visit date, diner tips, photos and the owner's reply, in up to 30 languages. Give restaurant URLs, location ids or names. No browser, no login. Pay per review. | review $0.005 | apify.com/kestrel/tripadvisor-restaurant-reviews |
| Booking.com Reviews Scraper | Every guest review of any Booking.com hotel: 1-10 score, title, what guests liked and disliked, language, stay dates, room, traveller type, reviewer country, photos and the property's reply. Give Booking.com URLs, hotel names or ids. No browser, no login. Pay per review. | review $0.005 | apify.com/kestrel/booking-reviews-scraper |
| Agoda Reviews Scraper | Every guest review of any Agoda property: 0-10 rating, title, review text, separate positives and negatives, stay dates, room type, reviewer country and the hotel's reply. Give a hotel name, an Agoda URL or an id. Pay per review. | review $0.005 | apify.com/kestrel/agoda-reviews-scraper |
| Airbnb Reviews Scraper | Every guest review from any Airbnb listing: star rating, full review text, the original language and Airbnb's translation, reviewer, date, stay type and the host's reply. Give listing URLs, ids, or a place name. Pay per review. | review $0.005 | apify.com/kestrel/airbnb-reviews-scraper |
| HRS Reviews Scraper | Every commented guest review of any HRS (hrs.com) hotel: 0-10 rating with twelve category votes, what guests liked and disliked, the hotel's replies, traveller type, stay dates and language, plus each property's averages by traveller type. Give HRS URLs or hotel ids. Pay per review. | review $0.003 | apify.com/kestrel/hrs-reviews-scraper |
| Trip.com Reviews Scraper | Every guest review of any Trip.com (Ctrip) hotel: 0-10 rating with location, cleanliness, service and amenities sub-scores, review text in its original language, stay date, room, travel type, reviewer country and the hotel's reply. Give Trip.com URLs or hotel ids. Pay per review. | review $0.004 | apify.com/kestrel/trip-com-reviews-scraper |
| Kurzurlaub Reviews Scraper | Every guest rating of any Kurzurlaub.de hotel: score on the 1-6 scale (6 is best), the per-area scores for rooms, service, food, leisure, location and value, title, comment when the guest wrote one, reviewer and date. Give Kurzurlaub hotel URLs or ids. Pay per rating row; filtered rows are free. | review $0.003 | apify.com/kestrel/kurzurlaub-reviews-scraper |
| Hostelworld Reviews Scraper | Every Hostelworld review of any hostel: the 0-100 overall score with its seven sub-ratings, the guest's text, the owner's reply, group type, age band, trip type and nationality. Give Hostelworld URLs or property ids. No key, no browser, no login — Hostelworld's own public JSON API. Pay per review. | review $0.003 | apify.com/kestrel/hostelworld-reviews-scraper |
| Zoover Reviews Scraper | Every Zoover.nl guest review of any hotel, campsite or apartment: the 1-10 score, title, full Dutch review text, per-aspect scores, travel party, travel date, reviewer and the owner's reply. Give Zoover accommodation URLs or ids. No browser, no login. Pay per review. | review $0.004 | apify.com/kestrel/zoover-reviews-scraper |
| Despegar Hotel Ratings Scraper | Despegar hotel guest ratings for Latin America: the 0-10 rating, the review count behind it, six category scores, Despegar's own AI-written summary of what guests say, and the up to four comments the page publishes. Give hotel URLs or ids, pick a country site. Pay per hotel. | hotel $0.004 | apify.com/kestrel/despegar-hotel-ratings |
| Trustpilot Reviews Scraper | Every Trustpilot review of any company: 1-5 rating, title, text, language, review and experience dates, reviewer name and country, verification, likes and the company's reply, plus TrustScore, the star histogram and contact details. Filter by stars, date, language and keyword before billing. | review $0.0007 | apify.com/kestrel/trustpilot-reviews-scraper |
| Indeed Company Reviews Scraper | Every Indeed employee review of any company: the 1-5 rating with five sub-ratings (work-life balance, pay, job security, management, culture), full text, pros, cons, job title, location, dates and employer replies. Company slugs or /cmp/ URLs, 44 country domains. No key, no login. Pay per review. | review $0.002 | apify.com/kestrel/indeed-company-reviews |
Ecommerce
| Actor documentation | What it returns | Price per row | Apify listing |
|---|---|---|---|
| Amazon Product Scraper | Amazon product data by ASIN or URL in 20 marketplaces: title, brand, buybox price and list price, currency, availability and stock flag, rating, images, bullet points, description, category, details table, seller and Best Sellers Rank when shown. Pay per product row; filtered rows are free. | product $0.004 | apify.com/kestrel/amazon-product-scraper |
| Amazon Search Scraper | Amazon search results, Best Sellers and New Releases as structured rows: ASIN, title, price, rating, rating count, image, sponsored flag and the exact position on the page. Track keyword rank and category charts in any marketplace. Pay per product row. | product $0.004 | apify.com/kestrel/amazon-search-scraper |
| Amazon Best Sellers Scraper | Amazon Best Sellers and New Releases charts for any category and marketplace, every rank on every page: best seller rank, ASIN, title, price, rating, rating count and image. Track BSR daily, spot products taking off, feed the ASINs into a reviews run. Pay per product row. | product $0.004 | apify.com/kestrel/amazon-best-sellers-scraper |
| Amazon Reviews Scraper | Customer reviews and rating data for any Amazon product, in any marketplace: star rating, review title and body, reviewer, country, date, verified-purchase flag and helpful votes, plus the product's overall rating and total rating count. Give ASINs or product URLs. Pay per review. | review $0.005, product $0.003 | apify.com/kestrel/amazon-reviews-scraper |
| AliExpress Reviews Scraper | Every AliExpress buyer review of any product: star rating, the buyer's own words plus a translation, buyer country, the SKU variant bought, their photos, the shipping method and the follow-up review. Product URLs or item ids in, reviews out. No key, no login, no browser. Pay per review. | review $0.002 | apify.com/kestrel/aliexpress-reviews-scraper |
| eBay Scraper | eBay search results and item pages as structured rows: price, list price, shipping, condition, buying format, bids, units sold, watchers, seller feedback and location. Filter by price server-side across 11 marketplaces. Pay per listing row. | item $0.003 | apify.com/kestrel/ebay-search-scraper |
Apps
| Actor documentation | What it returns | Price per row | Apify listing |
|---|---|---|---|
| Apple App Store Reviews Scraper | Apple App Store reviews for any iOS app, across every country storefront in one run: 1-5 rating, title, review text, reviewer, app version, date and the developer's reply. Give app ids, App Store URLs or app names. Filters bill only the reviews you keep. Pay per review. | review $0.004 | apify.com/kestrel/app-store-reviews-scraper |
| Google Play Reviews Scraper | Google Play reviews for any Android app, per language and country in one run: 1-5 rating, review text, reviewer, thumbs-up count, app version, date and the developer's reply. Give package names or Play URLs. Filters bill only the reviews you keep. Pay per review. | review $0.004 | apify.com/kestrel/google-play-reviews-scraper |
Guides: how to scrape it, what it costs, where it breaks
The pages above are the reference for each actor. These 20 guides answer the question first — how a source is reached, which of its behaviours quietly corrupt data, what a job costs, and which actor ends the search. Every fact in them is measured, and the limitations are stated.
| Guide | What it answers |
|---|---|
| How to Scrape TripAdvisor Reviews Without Getting Blocked | TripAdvisor blocks datacenter IPs and Chrome-shaped clients. The measured setup that works, the paging trap that loses reviews, and working Python. |
| How to Scrape Booking.com Reviews Without a Browser | Booking.com hotel pages need a browser and 60 seconds each. The review endpoint behind them does not. Here is the difference, with working Python. |
| How to Scrape Amazon Reviews: the Real Limit Is 13 | Amazon publishes 8-13 reviews per product to logged-out visitors. What that means for review scraping, what you can still build, and honest Python code. |
| How to Scrape Trustpilot Past the 200-Review Wall | Trustpilot serves anonymous visitors 200 reviews per view, then redirects to login. The star-band split that legitimately returns 1,000, with Python. |
| Which Review Sites Can Be Scraped Without a Browser | Measured evidence for 14 review sources: which answer a plain HTTP client, which need a TLS fingerprint, which need a browser, and which are closed. |
| How to Scrape Indeed Company Reviews (All Countries) | Indeed serves a different review subset per country domain. The one parameter that returns 6,257 of 6,258 in a single walk, plus the paging trap. |
| How to Scrape AliExpress Reviews Without Losing Rows | AliExpress page 1 ignores your page size, the backend shuffles results and no sort works. The paging rules that read 2,836 reviews in 15 requests. |
| How to Scrape eBay Listings (Sold Items Are Closed) | eBay active listings scrape cleanly; sold listings are sign-in walled — 0 of 115 attempts. What to use instead, plus the decoy cards on every page. |
| How to Scrape Google Hotels Prices with Python | Google Hotels prices for exact dates, every OTA per property, in one call. Plus the silent failure mode: Google never says it did not find your place. |
| How to Check Hotel Rate Parity Across OTAs | Find out when an OTA undercuts your direct rate: one row per property per date with every source compared, the spread and who is cheapest. |
| How to Find the Cheapest Day to Fly, as Data | Price every departure day in a window, rank them, and keep the history. One row per day with the airline, stops and duration attached — with Python. |
| How to Scrape Airbnb Prices and Estimate Occupancy | Nightly rates, totals and discounts for exact dates, plus a calendar-based occupancy estimate — and why blocked nights and booked nights look identical. |
| How to Scrape App Store and Google Play Reviews | Both stores serve reviews per storefront and locale, not globally. How to get a complete corpus, what each row carries, and the sort that breaks schedules. |
| How to Scrape Booking.com Hotel Prices by Date | Stay totals, taxes, cancellation and room rates for a destination or a comp set — and the per-session pricing that makes naive comparisons wrong. |
| How to Monitor Hotel Reputation Across OTAs | A daily feed of new guest reviews from every OTA a hotel sells on, normalised to one scale, at a cost measured in cents per property per month. |
| How to Build a Voice of Customer Dataset | Join reviews from OTAs, marketplaces, app stores and Trustpilot into one table: scales, languages, dedupe keys, ceilings and what each source is good for. |
| How to Track Competitor Prices Daily with n8n | A schedule, one HTTP node, a compare-with-yesterday code node and an alert. The workflow shape that turns any price scraper into a daily drop feed. |
| Pay Per Event vs Per Result: Scraper Pricing | How scraper pricing models differ, why the per-row price is not the cost, and the four questions that decide what a scraping job actually bills you. |
| How to Schedule a Scraper So It Never Goes Stale | Hard-coded dates rot the day after you set them. Relative date inputs keep a scheduled scraper meaning the same thing every morning — here is the grammar. |
| How to Track Amazon Best Sellers Rank (BSR) Daily | Chart pages render only 30 of 50 ranks as HTML. How to get contiguous ranks 1-100, what to diff between runs, and why rank alone misleads. |
Ready-made runs
163 of these actors' inputs are saved and published as ready-made runs — open one on the Apify Store, press Start, and it goes with the fields filled in. Useful both as a first run and as a worked example of what a sensible input looks like.
Which review scraper do I need?
Review scrapers are 17 of the 30, and they differ in what a row carries and in how deep a single property or company goes — from four comments on Despegar to the whole corpus on Trip.com. The review scraper comparison lays out the row contents, the sub-ratings, the reply field, the language coverage, the per-row price and the real ceiling for each one.
FAQ
What am I charged for?
One event per delivered row. Rows a filter removed before billing, free context and status rows, targets with no data, unknown ids and failed targets cost nothing, and a run that delivers nothing costs nothing. Each actor's pay-per-event schema is on its own page.
Do I need an API key for the site being read?
No. The actors read public pages and the JSON endpoints those pages call, with no login and no account on the source site. The only credential is your Apify token.
Will a scheduled run go stale?
No. Date inputs take relative values — checkIn: "30 days", sinceDate: "7 days" — so a schedule keeps meaning the same thing every morning.
Can I export to CSV or Excel?
Yes. Every run writes an Apify dataset, exportable to CSV, Excel, JSON or XML from the Console, or over the API by appending ?format=csv to the dataset items endpoint.
Can I call these from n8n, Make or an AI agent?
Yes. Each actor is callable through Apify's integrations, over the REST API, and from an AI agent through Apify's MCP server. The examples repository carries importable n8n workflows.
What happens when a run hits a spending limit?
The run stops delivering rather than handing you rows it could not charge for, so the row count in your dataset and the count on your invoice always agree.