Zoover Listings Extractor avatar

Zoover Listings Extractor

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Zoover Listings Extractor

Zoover Listings Extractor

Zoover listings extractor that scrapes hotel and holiday listings by country, region, or city, returning review scores, star ratings, awards, and package prices as clean rows so travel SEO and pricing teams can track the Benelux market without copying data by hand.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Kawsar

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Zoover Listings Extractor: scrape hotel and holiday listings from Zoover

The Zoover listings extractor scrapes hotel and holiday package listings from Zoover with review scores, star ratings, award history, package prices, and flight details on every record. Point it at a country, a region, a city, or a shortlist of properties, and it returns structured JSON you can drop straight into a spreadsheet or a database. It reads the same search that powers zoover.nl and zoover.be, so prices and review counts match what a visitor sees on the site.

Zoover is one of the biggest travel review sites in the Netherlands and Belgium, so it is a solid source for hotel review data and package holiday pricing in the Benelux market.

Use cases

  • Travel SEO research: pull review scores, star ratings, and award rankings for every hotel in a destination to see which properties dominate the results you are trying to rank against
  • Package holiday price monitoring: track price per person for the same hotel and trip length on a schedule, and catch price drops before your competitors do
  • Hotel benchmarking: compare your property's Zoover score, review count, and aspect ratings against every other hotel in the same city
  • Affiliate and content sites: build "best hotels in Antalya" style pages from real ratings and prices instead of hand-collected data
  • Market sizing: use the facet counts to see how many hotels in a country have a pool, a kids club, or a 5 star rating
  • Revenue management: watch which tour operators, board types, and departure airports are being sold for a destination, and at what price

Input

ParameterTypeDefaultDescription
brandstringZVRNLWhich storefront to search. ZVRNL for zoover.nl, ZVRBE for zoover.be.
transportTypestringINCLUDING_FLIGHTINCLUDING_FLIGHT returns flight and hotel packages. OWN returns accommodation-only stays.
countryIdsarray["933"]Zoover country IDs, one per line. 933 is Turkey, 919 is Spain, 922 is Greece.
regionIdsarrayemptyZoover region IDs, for example 4828 for the Turkish Riviera.
cityIdsarrayemptyZoover city IDs, for example 99048 for Belek. The tightest geographic filter.
entityIdsarrayemptySpecific property IDs, for tracking a fixed shortlist of hotels.
durationNightsarray["5","6","7","8","9"]Trip lengths in nights, one number per line.
adultsinteger2Adults travelling. Prices are quoted for this party size.
childreninteger0Children aged 2 to 17.
babiesinteger0Infants under 2.
starRatingsarrayemptyKeep only these star ratings. Values 0 to 5.
minReviewScorestringemptyMinimum review score out of 10. One of >=6, >=7, >=8, >=9.
accommodationTypesarrayemptyhotel, aparthotel, resort, appartement, villa, bungalow, chalet, camping, and more.
themesarrayemptysun_holiday, city_trip, child_friendly, luxe, all_inclusive, wellness, golf, and more.
attributesarrayemptywinter_sun, ski_holiday, package_holiday, adult_only, has_family_rooms, and more.
facilitiesarrayemptywifi, pool, kids_club, restaurant, jacuzzi, waterpark, pets_allowed, and more.
awardsarrayemptygold or silver, to keep only Zoover award winners.
departureAirportsarrayemptyIATA codes such as AMS, RTM, EIN, BRU, DUS. Packages with flight only.
tourOperatorsarrayemptyRestrict results to specific operator codes.
sortingOrderstringpopularity_descpopularity_desc, price, price_desc, hotel_review_rating, or price_quality.
maxItemsinteger100Stop after this many listings.
pageSizeinteger50Listings per API call, up to 500.
startPageinteger1Page to begin from, for resuming a run.
includeOffersbooleantrueAttach the raw offer array with rooms, board, flights, and surcharges.
includeAggregationsbooleanfalseSave search facet counts to the key value store under AGGREGATIONS.
requestTimeoutSecsinteger30Timeout for a single API response.
timeoutSecsinteger300Overall time budget for the run.
proxyConfigurationobjectDatacenter (Anywhere)Proxy type and location for requests. Supports Datacenter, Residential, Special, and custom proxies. Optional.

Example input

{
"brand": "ZVRNL",
"transportType": "INCLUDING_FLIGHT",
"countryIds": ["933"],
"durationNights": ["7"],
"adults": 2,
"starRatings": ["4", "5"],
"minReviewScore": ">=8",
"facilities": ["pool", "kids_club"],
"sortingOrder": "popularity_desc",
"maxItems": 100,
"includeOffers": false,
"proxyConfiguration": { "useApifyProxy": true }
}

What data does this actor extract?

Each dataset record is one property with its cheapest matching offer flattened onto it.

{
"giataId": 1400605,
"accommodationId": "1163cee7-775e-4736-8bea-fc23fdcc26fd",
"entityId": 130137,
"accoName": "Long Beach",
"accoType": "hotel",
"listingUrl": "https://www.zoover.nl/turkije/turkse-riviera/alanya/long-beach-resort",
"starRating": 5,
"reviewScore": 9.2,
"reviewCount": 605,
"lastReviewDate": "2026-08-10T08:35:27.356000+00:00",
"aspectRatings": {
"childFriendly": { "rating": 9.49, "count": 605 },
"hygiene": { "rating": 9.24, "count": 605 },
"location": { "rating": 9.18, "count": 605 },
"priceQuality": { "rating": 9.07, "count": 605 },
"room": { "rating": 9.07, "count": 605 },
"service": { "rating": 9.19, "count": 605 }
},
"latestAwardYear": "2025",
"latestAwardType": "gold",
"latestAwardRank": 200,
"country": "Turkije",
"countryCode": "TR",
"regionName": "Turkse Rivièra",
"cityName": "Alanya",
"cityId": 52799,
"currency": "EUR",
"bestPricePerPerson": 777.25,
"bestPriceTotal": 1554.5,
"mealPlan": "AI",
"boardName": "all inclusief",
"roomDescription": "Tweepersoonskamer - voordeel",
"durationNights": 5,
"departureDate": "2026-11-01",
"returnDate": "2026-11-06",
"departureAirport": "AMS",
"arrivalAirport": "AYT",
"airline": "Corendon Dutch Airlines B.V.",
"flightNumber": "CD 5099",
"tourOperator": "VAKNLB2C",
"searchRank": 1,
"resultsTotal": 34,
"scrapedAt": "2026-08-10T10:51:50.254715+00:00"
}
FieldTypeDescription
giataIdintegerGIATA property ID, stable across travel suppliers, useful for joining with other hotel datasets
accommodationIdstringZoover internal UUID for the property
entityIdintegerZoover entity ID, reusable as an entityIds input value
accoNamestringProperty name
accoTypestringhotel, aparthotel, resort, villa, camping, and so on
listingUrlstringDirect link to the property page on Zoover
slug / fullSlugstringURL slug and full destination path
previewImagestringMain listing photo
starRatingintegerOfficial star rating, 0 to 5
reviewScorenumberAverage Zoover review score out of 10
reviewCountintegerNumber of reviews behind the score
lastReviewDatestringTimestamp of the most recent review
aspectRatingsobjectSub-scores for hygiene, location, room, service, price quality, and child friendliness
travellerRatingsobjectScores split by couples, families, friends, solo travellers, and business
awardHistoryobjectEvery Zoover award year with tier and rank
latestAwardYear / latestAwardType / latestAwardRankstring, string, integerMost recent award, flattened for easy sorting
country / countryCode / countryEntityIdstring, string, integerCountry name, ISO code, and reusable filter ID
regionName / regionIdstring, integerRegion and its reusable filter ID
cityName / cityIdstring, integerCity and its reusable filter ID
isBookablebooleanWhether the property is bookable on Zoover right now
offerCountintegerHow many offers the search returned for this property
currencystringCurrency of all price fields
bestPricePerPersonnumberCheapest price per person for the searched party and trip length
bestPriceTotalnumberCheapest total package price
priceBeforeDiscountnumberTotal before discounts, so you can spot real markdowns
mealPlan / boardNamestringBoard code and its description, for example AI and all inclusief
roomDescriptionstringRoom or unit type sold with the cheapest offer
durationNights / durationDaysintegerLength of the cheapest offer
departureDate / returnDatestringTravel dates, or check-in and check-out for accommodation-only stays
departureAirport / arrivalAirportstringIATA codes for the outbound flight
airline / flightNumber / stopOverstring, string, integerOutbound flight details
luggageIncludedbooleanWhether checked luggage is in the package price
tourOperator / supplier / productCodestringWho sells the package and under which code
offersarrayRaw offers with rooms, board, flight segments, surcharges, and funds
searchRankintegerPosition in the sorted search results, starting at 1
pageNumberintegerSearch page the listing came from
resultsTotalintegerHow many listings matched the search
scrapedAtstringWhen the record was collected

How it works

  1. Your filters are turned into a single search query against the Zoover search backend, the same one the website calls.
  2. The actor pages through the sorted results, pulling up to 500 listings per request.
  3. Each result is flattened: property details, review breakdown, award history, and the cheapest offer become one record.
  4. Prices arrive in cents and are converted to normal euro amounts.
  5. Records are pushed to the dataset in batches while a running time budget keeps the run from overshooting.
  6. If facet counts are enabled, they are saved once to the key value store under AGGREGATIONS.

FAQ

How many listings can I get in one run? The Zoover search backend returns at most 500 matches for any single query, no matter how many exist. To go past that, split the run by region or city and merge the datasets. Each record carries resultsTotal so you can tell when you have hit the ceiling.

Where do I find the country, region, and city IDs? Every record includes countryEntityId, regionId, and cityId. Run one broad search, read the IDs off the results, then feed them back in to drill down. The IDs also appear as heliosId values on Zoover destination pages.

Can I scrape accommodation-only stays without flights? Yes. Set transportType to OWN. You get campsites, apartments, and holiday parks with a nightly package price and no flight fields.

Do the prices include everything? bestPriceTotal is the package total for the party you searched. Some surcharges and local taxes are paid on arrival and appear inside the raw offers array rather than in the headline price.

Why is my dataset so large? includeOffers is on by default and the raw offers contain full flight segments and supplier text. Turn it off for a flat, compact dataset.

Can I run this on a schedule? Yes. Schedule the actor daily or weekly and the same query returns fresh prices and review counts each time, which is how you build a price history.

Integrations

Connect Zoover Listings Extractor with other apps and services using Apify integrations. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use webhooks to trigger actions whenever results are available.

Start scraping Zoover listings

Set a country ID, pick a trip length, and run it. You get a clean table of Zoover hotel listings with review scores, award rankings, and package prices, ready for an SEO audit or a price tracker.