Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Hotline.ua API page →
E-commerce & Marketplaces

Hotline.ua API & Scraper

Hotline.ua is Ukraine's largest price-comparison site.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

This API reads it as JSON. `search` takes product words (Ukrainian, Russian or Latin) and an optional brand, and returns 48 products per page with the lowest and highest current price in UAH, the number of shops, brand, category, review count and short specs, plus the exact result total and category and brand facets. `category` reads a whole category with its own product total, six sorts and a price window. `offers` returns every shop selling one product in one call: price, condition (new or marked down), delivery time, the city it ships from, each delivery method with its stated cost, free-delivery flag, warranty, payment methods, instalment plans, the shop's rating and review counts, and whether the row is a paid placement. The offer list depends on the buyer's city, so `city` picks one of ten main cities (Kyiv by default). `product` adds the full specification sheet, barcode, per-aspect ratings, colour variants and the cheapest new-condition price. `price_history` returns the site's price chart: average, lowest and highest shop price over time in UAH and USD, and its own percentage price change over 14 days to all time.

Reference

What a Hotline.ua field actually contains

Fields that read differently from how they look. Every row was measured against live hotline.ua pages on 2026-10-15.

FieldWhat it holds
product_idHotline's numeric product id as a string (24927903). Pass it unchanged to product, offers and price_history; search and category rows of every kind returned the same id and the same lowest price on 18 of 18 round trips.
row_typeproduct for a product with several shops, single_offer when only one shop sells it (shop_name, offer_id and outbound_url are then set). Both open with product and offers.
lowest_price, highest_priceThe site's own current price range for the product, the same numbers the product page prints ('ціни: 23 171 – 47 499 ₴'): matched on 8 of 8 product pages in each of two runs, and equal to the cheapest and the most expensive row of offers.
cheapest_new_offerThe lowest price among new-condition offers. lowest_price can come from a marked-down offer: for an iPhone 15 128GB it was 23 171 UAH from a marked-down unit while the cheapest new one was 28 700 UAH.
conditionnew, discounted (the site's 'уцененный': marked down, open box or display unit) or used; condition_text keeps the site's own word.
listing_type, has_bidsponsored for a paid placement, regular otherwise. The default offer order is the site's own, which puts paid placements first (24 of 67 offers for the iPhone 15 in Kyiv).
delivery_methods, lowest_stated_delivery_costEach delivery option (Nova Poshta, Ukrposhta, courier, pickup) with its cost: 0 when free, the amount when the shop states one, null for 'carrier tariff'. Hotline publishes no single shipping fee, so there is no total price.
city, same_city, ships_fromThe offer list is for the buyer's city: 67 shops for the iPhone 15 in Kyiv, 61 in Lviv, 60 in Kharkiv, 61 in Odesa on the same day. Prices of a shop do not change with the city; same_city and the order do.
shop_rating_percentThe shop's rating on Hotline's 0-100 scale, with positive and negative review counts; null for a new shop without reviews.
price_history seriesAverage, lowest and highest shop price in UAH and USD and the number of offers, twice a month from the product's start and daily for recent weeks. Periods the site kept no lowest or highest price for are null, not zero.

Prices are in UAH as the shops list them on Hotline.ua; a few carry kopecks (13 660.23).

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/hotline-ua/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "iphone 15"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "hotline-ua",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2976.1,
    "record_count": 48,
    "bytes": 88327,
    "cache_hit": false,
    "total": 2163,
    "last_page": 46,
    "upstream_requests": 3,
    "charged_credits": 3,
    "version": "0.1.0",
    "request_id": "be64c649f93e42a7",
    "queue_ms": 1.2,
    "fetched_at": "2026-10-15T17:02:55.043Z"
  },
  "data": {
    "query": "iphone 15",
    "brand_id": null,
    "total": 2163,
    "page": 1,
    "last_page": 46,
    "has_more": true,
    "page_size": 48,
    "currency": "UAH",
    "results": [
      {
        "product_id": "24927903",
        "row_type": "product",
        "title": "iPhone 15 128GB Black (MTP03)",
        "url": "https://hotline.ua/ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-15-128gb-black-mtp03/",
        "product_path": "apple-iphone-15-128gb-black-mtp03",
        "brand": "Apple",
        "brand_id": 242,
        "category_id": 11,
        "category_path": "/mobile/mobilnye-telefony-i-smartfony/",
        "product_type": "Смартфон",
        "lowest_price": 23171,
        "highest_price": 47499,
        "currency": "UAH",
        "offer_count": 66,
        "shop_name": null,
        "shop_id": null,
        "offer_id": null,
        "outbound_url": null,
        "review_count": 3,
        "question_count": 1,
        "image": "https://hotline.ua/img/tx/585/5855374215.jpg",
        "short_specs": [
          "Смартфон",
          "екран: 6,1\"",
          "OLED"
        ],
        "is_new": false,
        "added_date": "2023-09-12",
        "is_adult": false
      },
      {
        "product_id": "24927918",
        "row_type": "product",
        "title": "iPhone 15 256GB Black (MTP63)",
        "url": "https://hotline.ua/ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-15-256gb-black-mtp63/",
        "product_path": "apple-iphone-15-256gb-black-mtp63",
        "brand": "Apple",
        "brand_id": 242,
        "category_id": 11,
        "category_path": "/mobile/mobilnye-telefony-i-smartfony/",
        "product_type": "Смартфон",
        "lowest_price": 34500,
        "highest_price": 44311,
        "currency": "UAH",
        "offer_count": 46,
        "shop_name": null,
        "shop_id": null,
        "offer_id": null,
        "outbound_url": null,
        "review_count": 0,
        "question_count": 4,
        "image": "https://hotline.ua/img/tx/582/5828121625.jpg",
        "short_specs": [
          "Смартфон",
          "екран: 6,1\"",
          "OLED"
        ],
        "is_new": false,
        "added_date": "2023-09-12",
        "is_adult": false
      },
      {
        "product_id": "24928335",
        "row_type": "product",
        "title": "iPhone 15 Pro Max 256GB Natural Titanium (MU793)",
        "url": "https://hotline.ua/ua/mobile-mobilnye-telefony-i-smartfony/apple-iphone-15-pro-max-256gb-natural-titanium-mu793/",
        "product_path": "apple-iphone-15-pro-max-256gb-natural-titanium-mu793",
        "brand": "Apple",
        "brand_id": 242,
        "category_id": 11,
        "category_path": "/mobile/mobilnye-telefony-i-smartfony/",
        "product_type": "Смартфон",
        "lowest_price": 36999,
        "highest_price": 56500,
        "currency": "UAH",
        "offer_count": 10,
        "shop_name": null,
        "shop_id": null,
        "offer_id": null,
        "outbound_url": null,
        "review_count": 6,
        "question_count": 3,
        "image": "https://hotline.ua/img/tx/582/5828121655.jpg",
        "short_specs": [
          "Смартфон",
          "екран: 6,7\"",
          "OLED"
        ],
        "is_new": false,
        "added_date": "2023-09-12",
        "is_adult": false
      }
    ],
    "category_facets": [
      {
        "category_id": 599,
        "name": "Чохли для смартфонів",
        "path": "/mobile/chehly-sumki-futlyary-dlya-mobilnyh-i-smartfonov/",
        "count": 1416,
        "group": "Смартфони, Смарт-годинники"
      },
      {
        "category_id": 245,
        "name": "Захисні плівки та скло для смартфонів",
        "path": "/mobile/zaschitnaya-plenka-dlya-mobilnyh-telefonov/",
        "count": 439,
        "group": "Смартфони, Смарт-годинники"
      },
      {
        "category_id": 11,
        "name": "Смартфони та мобільні телефони",
        "path": "/mobile/mobilnye-telefony-i-smartfony/",
        "count": 297,
        "group": "Смартфони, Смарт-годинники"
      }
    ],
    "brand_facets": [
      {
        "brand_id": 130428,
        "name": "ArmorStandart",
        "count": 567
      },
      {
        "brand_id": 242,
        "name": "Apple",
        "count": 364
      },
      {
        "brand_id": 145413,
        "name": "Proove",
        "count": 185
      }
    ]
  }
}
Actions

What the Hotline.ua API does

ActionDescriptionConcrete use caseKey params
searchKeyword search across hotline.ua's whole catalogue. Each row is a product with its lowest and highest current price in UAH, the number of shop offers (or the one shop when only one sells it), brand, category, review count and short specs. Also returns the exact result total and category / brand facets. Optional brand filter (brand_id from `brand_facets`).Pricing teams call search to get keyword search across hotline.ua's whole catalogue.query, brand_id, page
categoryOne category's product listing (e.g. mobilnye-telefony-i-smartfony = smartphones) with the category's own product total, sort, price range and paging. Prices are the products' current lowest / highest offer in UAH.Marketplace operators call category to get one category's product listing (e.g.category, sort, min_price, max_price, city, ...
productOne product card: title, brand, category, barcode, lowest / highest / average current price, the lowest price among NEW-condition offers, offer count, rating and review counts with per-aspect ratings, the full specification sheet, description, images, colour / size variants and the last price-history point.Catalog enrichment teams call product to get one product card.product_id, url, city
offersEvery shop offer for one product in one city, in the site's own order (paid placements first) or by price / warranty: shop (name, id, website, rating, review counts, official / new), price, condition (new / discounted), dispatch time, where it ships from, same-city flag, each delivery method with its stated cost, free-delivery flag, warranty, payment methods, instalment plans, whether the row is a paid placement, and the click-through link.Retail analysts call offers to get every shop offer for one product in one city, in the site's own order (paid placements first)….product_id, url, city, sort
price_historyThe product's price chart as the site draws it: average, lowest and highest shop price over time in UAH and USD, and the number of offers, twice a month and then daily for recent weeks; plus the site's own % price change over 14 / 30 days, 3 / 6 months, a year and all time.Pricing teams call price_history to get the product's price chart as the site draws it.product_id, url, city
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/hotline-ua/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"iphone 15"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.hotline-ua.search with {"query":"iphone 15"}.
Use cases

Who uses this API and why

  • Monitor the cheapest shop price for a product list in Ukraine every day, per city.
  • Track which shops pay for placement on a product and how their prices compare.
  • Build price-history datasets in UAH and USD per product.
  • Map a category's catalogue with prices, offer counts, ratings and specs.
  • Check stated delivery options and warranty terms across shops for one product.
FAQ

Questions developers ask before integrating

Do I need a Hotline.ua account?

No. Everything is read logged out, and you call reefapi.com from anywhere.

Why does the shop list change with the city?

Hotline shows the shops that deliver to the buyer's city. On 2026-10-15 an iPhone 15 128GB had 67 offers in Kyiv, 61 in Lviv, 60 in Kharkiv and 61 in Odesa; the 61 shops present in both Kyiv and Lviv had identical prices. Pass city = kyiv, lviv, kharkiv, odesa, dnipro, zaporizhzhia, vinnytsia, poltava, mykolaiv or kherson.

How many shops does offers return?

All of them in one call: 2 to 100 shops per product in our sample (iPhone 15 128GB: 67 in Kyiv).

Is the search total exact?

Yes. "iphone 15" reported 2 158 results; 44 pages of 48 plus 46 rows on page 45 is exactly 2 158, and page 46 is empty.

Which filters are there?

Search: brand (iphone 15 → Apple only: 2 158 → 361, 48 of 48 rows Apple). Category: a price window (smartphones 4 495 → 1 306 for 10 000-20 000 UAH) and six sorts; price ascending and descending were in order on 48 of 48 rows. The price window keeps a product whose price range touches it.

Is shipping included in the price?

No. Hotline lists each shop's delivery methods with their own cost; most say 'carrier tariff' without a number. You get every method's cost where stated and the lowest stated one.

How far back does price_history go?

To the product's start on the site: October 2023 for the iPhone 15, 427 points to the previous day, with the site's own price change over 14 and 30 days, 3 and 6 months, a year and all time.

Are sponsored shops marked?

Yes. Each offer carries has_bid and listing_type; the default order is the site's own, paid placements first. Ask for sort = price_asc to rank by price.

What is the Hotline.ua API?

Hotline.ua API is a ReefAPI endpoint group for ukraine's largest price-comparison site: every shop's price for a product per city, specs, ratings, price history and category listings in uah. It returns live JSON through POST requests under /hotline-ua/v1.

Is the Hotline.ua API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Hotline.ua calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Hotline.ua login or account?

No login to Hotline.ua is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Hotline.ua data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Hotline.ua API use?

Hotline.ua actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Hotline.ua from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call hotline-ua actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / hotline-ua

Hotline.ua

Ukraine's largest price-comparison site: every shop's price for a product per city, specs, ratings, price history and category listings in UAH.

base /hotline-ua/v15 endpoints
post/hotline-ua/v1/category2 credits

One category's product listing (e.g. mobilnye-telefony-i-smartfony = smartphones) with the category's own product total, sort, price range and paging. Prices are the products' current lowest / highest offer in UAH.

ParameterAllowed / rangeDescription
categoryrequired—Category: its slug (mobilnye-telefony-i-smartfony), its path or URL (/mobile/mobilnye-telefony-i-smartfony/), a row's `category_path`, or its numeric id (11, a row's `category_id`).
sort = popularoptionalpopular · price_asc · price_desc · newest · name · offersResult order.
min_priceoptional0–Lower end of the price window in UAH (whole hryvnias). The site keeps a product when its lowest-to-highest offer range touches the window, so a row's min_price can sit just below it.
max_priceoptional0–Upper end of the price window in UAH (whole hryvnias); same range-overlap rule as min_price.
city = kyivoptionalkyiv · lviv · kharkiv · odesa · dnipro · zaporizhzhia · vinnytsia · poltava · mykolaiv · khersonBuyer's city. Hotline shows a different offer list per city (which shops deliver there, same-city flag, delivery lines, order); prices of the same shop do not change. Default Kyiv, the site's own default. The city id (187 = Kyiv) is accepted too.
page = 1optional1–500Result page, 48 rows per page. `last_page` in the answer is the source's own count; a page past it returns no rows.
Try in playground →
post/hotline-ua/v1/product1 credit

One product card: title, brand, category, barcode, lowest / highest / average current price, the lowest price among NEW-condition offers, offer count, rating and review counts with per-aspect ratings, the full specification sheet, description, images, colour / size variants and the last price-history point.

ParameterAllowed / rangeDescription
product_idoptional—Hotline product id: the `product_id` of a search / category row (also in the site's own product data). Provide product_id OR url.
urloptional—A hotline.ua product URL, or a row's `product_path`; alternative to product_id.
city = kyivoptionalkyiv · lviv · kharkiv · odesa · dnipro · zaporizhzhia · vinnytsia · poltava · mykolaiv · khersonBuyer's city. Hotline shows a different offer list per city (which shops deliver there, same-city flag, delivery lines, order); prices of the same shop do not change. Default Kyiv, the site's own default. The city id (187 = Kyiv) is accepted too.
Try in playground →
post/hotline-ua/v1/offers2 credits

Every shop offer for one product in one city, in the site's own order (paid placements first) or by price / warranty: shop (name, id, website, rating, review counts, official / new), price, condition (new / discounted), dispatch time, where it ships from, same-city flag, each delivery method with its stated cost, free-delivery flag, warranty, payment methods, instalment plans, whether the row is a paid placement, and the click-through link.

ParameterAllowed / rangeDescription
product_idoptional—Hotline product id: the `product_id` of a search / category row (also in the site's own product data). Provide product_id OR url.
urloptional—A hotline.ua product URL, or a row's `product_path`; alternative to product_id.
city = kyivoptionalkyiv · lviv · kharkiv · odesa · dnipro · zaporizhzhia · vinnytsia · poltava · mykolaiv · khersonBuyer's city. Hotline shows a different offer list per city (which shops deliver there, same-city flag, delivery lines, order); prices of the same shop do not change. Default Kyiv, the site's own default. The city id (187 = Kyiv) is accepted too.
sort = defaultoptionaldefault · price_asc · price_desc · warrantyOffer order, using the site's own rank for each order.
Try in playground →
post/hotline-ua/v1/price_history3 credits

The product's price chart as the site draws it: average, lowest and highest shop price over time in UAH and USD, and the number of offers, twice a month and then daily for recent weeks; plus the site's own % price change over 14 / 30 days, 3 / 6 months, a year and all time.

ParameterAllowed / rangeDescription
product_idoptional—Hotline product id: the `product_id` of a search / category row (also in the site's own product data). Provide product_id OR url.
urloptional—A hotline.ua product URL, or a row's `product_path`; alternative to product_id.
city = kyivoptionalkyiv · lviv · kharkiv · odesa · dnipro · zaporizhzhia · vinnytsia · poltava · mykolaiv · khersonBuyer's city. Hotline shows a different offer list per city (which shops deliver there, same-city flag, delivery lines, order); prices of the same shop do not change. Default Kyiv, the site's own default. The city id (187 = Kyiv) is accepted too.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.