Rayna Product Dashboard

Data Quality API Docs
🚀

Select a mode and click Fetch & Enrich to load product data with full details, pricing, reviews, amenities and location.

Raw API Endpoints

API Documentation

Base URL: https://data-projects-flax.vercel.app

GET /api/enriched-feed

Main API — fetches product listings and enriches each with detail, pricing, reviews, amenities, location, and images from 4 internal APIs.

Query Parameters

Param Type Default Description
formatstringcsvjson or csv
typesstringtour,holiday,cruise,yacht,visaComma-separated: tour, holiday, cruise, yacht, visa
cityIdnumberFilter to a single city (e.g. 13668 = Dubai)
cityNamestringCity name for the output
countryNamestringCountry name for the output
productIdnumberFetch & enrich a single product
productTypestringtourUsed with productId
limitnumber0 (all)Max products to enrich (0 = all). Non-enriched products still returned with listing data.

Response Columns (58 fields)

Identity
id, product_id, product_type, item_group_id
Content
title, description, promotion_badge
Links
link, share_url, booking_url, image_link
Pricing (listing)
list_price, list_sale_price, currency
Pricing (detail API)
detail_price, detail_discount, detail_discounted_price, availability_status, price_variant, feed_price, feed_sale_price
Location
country, city, city_id, address, location_name, latitude, longitude
Reviews
avg_rating, review_count, reviews_excellent, reviews_very_good, reviews_average, reviews_poor, reviews_terrible
Amenities
amenities, duration, pickup, transport, meals, language, group_size, hotel, nights, confirmation, cancellation
Yacht-specific
yacht_type (private/sharing), yacht_min_guests, yacht_max_guests
Holiday-specific
holiday_hotels, holiday_tours, holiday_categories
Cruise-specific
next_cruise_date, total_cruise_dates
Feed Standard
availability, condition, brand, enriched

Example Requests

# Single product
GET /api/enriched-feed?productId=174&productType=tour&format=json
GET /api/enriched-feed?productId=351&productType=visa&format=json
GET /api/enriched-feed?productId=6&productType=yacht&format=json
# City — all types, enrich first 5
GET /api/enriched-feed?cityId=13668&cityName=Dubai+City&countryName=UAE&format=json&limit=5
# City — yachts only
GET /api/enriched-feed?cityId=13668&types=yacht&format=json&limit=3
# Visa only (all countries)
GET /api/enriched-feed?types=visa&format=json&limit=3
# Full feed CSV (all cities, all types)
GET /api/enriched-feed?format=csv&limit=10

Other Endpoints (Raw Data)

Endpoint Method Params Description
/api/available-citiesGETproductTypeList all cities with products for a given type
/api/city/productsGETcityIdTour/activity listings for a city
/api/city/holidayGETcityIdHoliday packages for a city
/api/city/cruiseGETcityIdCruise listings for a city
/api/city/yachtGETcityIdYacht listings for a city
/api/visasGETformat, countryAll visa products (format=csv for CSV)
/api/all-productsGETproductType, cityId, cityName, countryNameNormalized product list for any type + city
/api/generate-feedGETformat, detailsFull product feed (CSV/JSON). details=true adds page scraping.
/api/get-feedGETGet cached feed from Netlify Blobs
/api/feed-statusGETCheck feed generation status

Notes

  • Type normalization: The listing API returns activities for tours. The enriched feed auto-converts to tour for detail API calls.
  • Visa flow: Visa has no city-based listing. It fetches all visas via tRPC, resolves each slug to a product ID via /api/pages, then enriches. Images are fetched from the image gallery API since the visa listing has none.
  • Review fallback: The review aggregate API only works for tour products. Holiday/cruise/yacht/visa use the listing-level averageRating and reviewCount as fallback.
  • Price variants: Tour/combo use options.totalPrice. Holiday/cruise use options.price. Yacht uses option.totalPrice (singular). Visa uses options.price.
  • Enrich limit: Use limit=N to only enrich the first N products (3 API calls each). Remaining products still appear with listing data only. limit=0 (default) enriches all.
  • Common city IDs: Dubai = 13668, Abu Dhabi = 13236, Ras Al Khaimah = 14070