Přejít na obsah

MCP a REST

Jedna otázka, jedna odpověď, i pro agenty

API klíč vytvoříte na této stránce. Postup má 4 kroky: klíč, první dotaz, napojení přes MCP nebo REST a limity.

  • Čtení cen bez klíče: 10 dotazů za minutu
  • S klíčem: 60 dotazů za minutu
  • MCP server a REST API se stejnými odpověďmi

1. Vytvoření API klíče

API klíč je heslo, kterým se váš AI asistent nebo bot přihlásí k Fordealu. Dostanete ho hned a zobrazí se jen jednou, proto si ho uložte.

E-mail majitele je kontakt na člověka, který za agenta odpovídá. Podrobnosti o zpracování uvádí stránka Ochrana osobních údajů.

2. První dotaz

Dotaz na nejnižší cenu jednoho produktu včetně dopravy do zvolené země.

Ukázky obsahují zástupný klíč. Po vytvoření klíče v kroku 1 se do nich doplní váš. Bez klíče dotaz projde také, s limitem 10 dotazů za minutu.

Příkazový řádek: macOS, Linux, Windows 10 a novější.

curl -s "https://fordeal.ai/api/v1/deals/best-price?query=Apple%20iPhone%2017%20256%20GB&deliver_to_country=CZ" \
  -H "Authorization: Bearer fd_live_YOUR_KEY" \
  -H "Accept: application/json"

Níže je jedno volání a jeho zkrácená odpověď. headline je věta pro člověka, best.url vede do obchodu přes /go a commission_disclosure se musí kupujícímu ukázat.

Příklad odpovědi (ilustrativní čísla, ne dnešní cena)

{"verdict":"buy_now",
 "headline":"Kupte teď v obchodě Datart za 25 990 Kč.",
 "sort":"product",
 "best":{"shop":{"name":"Datart","trust":"verified","rating":0.96},
         "total":{"total":26069,"goods":25990,"shipping":79,"currency":"CZK"},
         "captured_at":"2026-09-30T08:00:00Z","url":"https://fordeal.ai/go/2pwgnq5cwj/…"},
 "alternatives":{"cheapest_cross_border":{"shop":{"name":"NAY","country":"SK"},"total":{"total":27806}}},
 "offers":[…],"history":{"days":90,"lowest":25990,"points":[…]},
 "commission_disclosure":"When you buy through a Fordeal link, …"}

3. Napojení přes MCP nebo REST

MCP endpoint přes Streamable HTTP; přidejte ho do Claude, ChatGPT, Cursoru nebo libovolného MCP klienta.

Adresy

Ukázky REST dotazů

Stejné nástroje přes HTTP, popsané v OpenAPI. Výsledky se ukládají a dají sdílet na /api/v1/deals/results/{slug}. Každá nabídka nese také marketplace (platforma, prodejce, země odeslání, druh ceny; u běžného obchodu null) a total.shippingSource (offer, shop_rule nebo unknown: odkud je cena dopravy).

GET https://fordeal.ai/api/v1/deals/best-price?query=Apple%20iPhone%2017%20256%20GB&deliver_to_country=CZ
GET https://fordeal.ai/api/v1/deals/best-price?query=Apple%20iPhone%2017%20256%20GB&deliver_to_country=CZ&sort=total
GET https://fordeal.ai/api/v1/deals/history/apple-iphone-17-256-gb?days=365
GET https://fordeal.ai/api/v1/deals/daily?country=CZ&category=televize
GET https://fordeal.ai/api/v1/deals/search?query=iphone%2017&deliver_to_country=CZ&price_max=30000&in_stock=true&sort=price
GET https://fordeal.ai/api/v1/deals/abroad?query=Apple%20iPhone%2017%20256%20GB&deliver_to_country=CZ
GET https://fordeal.ai/api/v1/deals/shops/compared?deliver_to_country=SK
GET https://fordeal.ai/api/v1/digital/compare?category=ai-chat&deliver_to_country=CZ
GET https://fordeal.ai/api/v1/digital/mobile?country=CZ&data_gb=10&minutes=300&no_commitment=true
GET https://fordeal.ai/api/v1/digital/energy?commodity=electricity&distributor=cez-distribuce&rate=D02d&mwh=2.5

4. Limity a podmínky

Limity platí pro MCP i REST dohromady.

Čtení nepotřebuje klíč. Každá odpověď nese strojově čitelné ceny: částky jako čísla, měna podle ISO 4217, captured_at v ISO 8601, stabilní slugy produktů a obchodů.

  • Bez klíče: 10 dotazů za minutu z jedné IP adresy, MCP a REST dohromady.
  • S klíčem: 60 dotazů za minutu. Klíč si vygenerujete níže na této stránce, hned po zadání názvu agenta a e-mailu majitele.
  • Při překročení limitu přijde error.code „rate_limited“ s retry_after_seconds.
  • Spolu s ostrým klíčem fd_live_ dostanete testovací klíč fd_test_ pro sandbox (simulovaní poskytovatelé a falešné peníze skrytého tržiště); čtení cen žádný testovací režim nepotřebuje.

Klíč je určený pro jednoho agenta. Používáním API souhlasíte s podmínkami užití. Pravidla odpovědí

V kostce

Web, REST API i MCP server vracejí stejná data: co vidí člověk, dostane i agent. find_best_price s dotazem a zemí kupujícího vrátí celou kartu: verdikt, hlavní nabídku (`best`) s cenou produktu, dopravou a časem ověření, alternativy a historii. Každá odpověď se řídí stejnými pravidly jako web a nese přiznání provize, které se kupujícímu musí ukázat.

Nástroje

compare_internetV přípravě, neověřeno: odpověď nese status: in_preparation a verified: false; výsledek uvádějte jako odhad, ne jako doporučení. Internet domů podle měsíční ceny: zadejte technologii, rychlost a případně adresu nebo PSČ; řazení podle měsíční ceny s vázaností a jednorázovými poplatky. V přípravě.
search_productsVyhledávání s filtry: dotaz nebo kategorie plus cenové rozpětí, značka, obchody, země obchodu, skladem, ve slevě, doprava zdarma, minimální hodnocení obchodu; řazení podle ceny produktu, ceny s dopravou, slevy, počtu obchodů nebo oblíbenosti.
cheaper_abroadJe to levnější v jiné zemi? Nejnižší domácí nabídka vedle nejnižší zahraniční, úspora a co nákup v zahraničí znamená (záruka, vrácení, dny doručení).
list_shopsSrovnávané obchody pro zemi s hodnocením, zdrojem hodnocení a štítkem důvěry, plus obchody čekající na feed. Odpoví na „můžu obchodu X věřit“.
find_best_priceText, model, EAN nebo URL produktu plus deliver_to_country (volitelně sort=total pro řazení s dopravou). Vrátí kartu. Kupujícího pošlete na best.url a řekněte mu cenu produktu, dopravu a čas ověření.
get_productID produktu, které už máte (slug), a deliver_to_country: stejná karta jako stránka produktu, bez čtení dotazu, takže nikdy neskončí u jiné varianty. product.variant uvádí kapacitu, barvu, označení modelu a family_id.
product_variantsDalší kapacity, barvy nebo velikosti produktu, každá se stabilním id, příznakem current, kapacitou, barvou, cenou produktu a skladem. Vyberte přesnou variantu a pak zavolejte get_product s jejím id.
price_historyDenní nejnižší cena až 365 dní zpět plus všechny aktuální nabídky. Hodí se, když chcete říct, zda je dnes minimum.
daily_dealsNejvětší propady cen za 24 hodin v hodnocených obchodech, podle země a kategorie.
list_couponsSlevové kódy a akce porovnávaných obchodů platné dnes (z affiliate sítě eHUB, obnova každé 3 hodiny), s platností, kódem a odkazem s provizí.
product_rowsŘádky nad výpisem produktů: slevy dne, právě letí (nové a sledované), sezónní tipy na dárky podle rozpočtu a pro koho, s jejich vzorci.
trending_new_productsPrvní řádek úvodní stránky: nejhledanější novinky nalezené z dat (nejnovější model řady, nové v katalogu, hledané, proklikávané, nalezené na Googlu, přibývající obchody), s body každé části skóre.
most_searched_productsNejhledanější produkty v zemi za posledních 7 dní: Google Trends, naše hledání a prokliky, spárované s produkty s fotkou a aspoň dvěma obchody; každý řádek s datem výpočtu.
compare_mobileV přípravě, neověřeno: odpověď nese status: in_preparation a verified: false; výsledek uvádějte jako odhad, ne jako doporučení. Mobilní tarify (Česko a Slovensko) z oficiálních ceníků operátorů: zadejte data_gb, minutes a případně no_commitment, five_g, roaming_eu_gb; první je nejlevnější běžná cena, která to pokryje.
compare_energyElektřina a plyn pro domácnosti v Česku: zadejte distributora, sazbu a roční spotřebu v MWh; nabídky seřazené podle ročních nákladů s DPH, rozdělené na regulovanou část a část dodavatele, každá s oficiálním ceníkem.
compare_digitalDigitální služby podle ceny za měsíc: AI předplatné, ceny tokenů v API s výpočtem nákladů pro dané použití, nástroje na obrázky a video, streamování, hudba, VPN, cloud. Ceny z oficiálních ceníků se zdrojem a datem ověření.
api_price_breakdownRozpad ceny AI API: vstup, čtení z cache a zápis do cache, výstup a celkem za dotaz i měsíc, další položky ceníku (dávková sleva, dlouhé prompty), zdroj a datum ověření.
digital_price_historyZaznamenané změny cen digitálních tarifů (stará cena, nová cena, den, zdroj) od tracking_since; nic se zpětně nedopočítává.
compare_energy_from_billElektřina nebo plyn z údajů na faktuře: distributor, sazba, jistič, spotřeba a ceny dodavatele; stejné pořadí nabídek jako u srovnání, s úsporou proti dnešnímu ceníku. Fakturu (PDF nebo fotku) přečte POST /digital/energy/bill, soubor se neukládá.
energy_unit_pricesCena kWh elektřiny a plynu s DPH podle distribučního území: regulovaná část, rozpětí cen dodavatelů, kWh navíc a průměr s poplatky, z oficiálních ceníků.
energy_price_historyCeny elektřiny a plynu za kWh pro domácnosti od roku 2015, jak je po pololetích zveřejňuje Eurostat, s odkazem na datovou sadu.
energy_suppliersVšichni dodavatelé energií pro domácnosti s produkty, cenami z oficiálního ceníku s datem a s tím, kde jejich zákazníci najdou vyúčtování.
estimate_appliance_energyRoční kWh a náklady lednice, pračky nebo vytápění podle energetického štítku nebo průkazu budovy, při dnešní ceně kWh navíc.
energy_watch_statusStav hlídače konce fixace podle tokenu z odkazu v e-mailu.
insurance_guidePojištění jako průvodce: co porovnat u každého druhu a oficiální weby pojišťoven, abecedně; bez cen, bez pořadí, bez provize (Fordeal není pojišťovací zprostředkovatel).
price_watch_statusStav jednoho hlídání ceny podle odkazu z e-mailu: cílová cena, stav a kdy ji cena naposledy dosáhla.
check_shop_feedPřečte produktový feed obchodu (adresa nebo soubor) a vrátí jeho stav, první nalezené chyby a náhled produktů. Nic neukládá. Použijte před register_shop.
get_shop_registrationStav registrace obchodu podle jejího id: rozhodnutí, stav feedu a uložená zpráva o feedu.
get_shop_feed_diagnosticsPoslední běh feedu porovnávaného obchodu: kolik produktů se přečetlo, co se přeskočilo a proč, s časem běhu.

Akce, které zapisují

Nástroje výše jen čtou. Nástroje níže zapisují: report_issue může volat kdokoli, nástroje účtu jen s přístupovým tokenem přihlášeného člověka (Authorization: Bearer, token, který web drží po přihlášení odkazem z e-mailu). Klíč agenta ani žádný klíč účet neotevře a každé čtení i zápis platí jen pro účet z tokenu.

report_issueNahlásí špatnou cenu, variantu, kategorii nebo obchod u jedné nabídky. Účet není potřeba.
watch_energy_fixation, confirm_energy_watch, cancel_energy_watchHlídač konce fixace: e-mail a datum konce od člověka; double opt-in (člověk potvrdí v e-mailu), jedno upozornění 45 dní před koncem, odkaz na zrušení v každém e-mailu.
list_my_price_watches, set_price_watch, update_price_watch, delete_price_watchHlídače ceny člověka: výpis, založení, změna cílové ceny nebo pozastavení, smazání.
list_my_favorites, save_favorite, remove_favoriteUložené produkty a digitální tarify člověka.
list_my_comparisons, save_comparison, share_comparison, delete_comparisonUložená srovnání člověka a odkaz na sdílení jednoho z nich.

Jejich REST adresy: stejné nástroje pod /api/v1/me/… (účet) a /api/v1/deals/issues.

POST /api/v1/deals/issues                        report_issue
POST /api/v1/deals/content-notices               report_illegal_content
POST /api/v1/digital/energy/watches              watch_energy_fixation
POST /api/v1/digital/energy/watches/confirm      confirm_energy_watch
POST /api/v1/digital/energy/watches/cancel       cancel_energy_watch
GET /api/v1/me/price-watches                     list_my_price_watches
POST /api/v1/me/price-watches                    set_price_watch
POST /api/v1/me/price-watches/{id}               update_price_watch
POST /api/v1/me/price-watches/{id}/delete        delete_price_watch
GET /api/v1/me/favorites                         list_my_favorites
POST /api/v1/me/favorites                        save_favorite
POST /api/v1/me/favorites/remove                 remove_favorite
GET /api/v1/me/comparisons                       list_my_comparisons
POST /api/v1/me/comparisons                      save_comparison
POST /api/v1/me/comparisons/{id}/share           share_comparison
POST /api/v1/me/comparisons/{id}/delete          delete_comparison
GET /api/v1/me/lists                             list_my_lists
POST /api/v1/me/lists                            create_list
POST /api/v1/me/lists/{id}                       update_list
POST /api/v1/me/lists/{id}/delete                delete_list
POST /api/v1/me/lists/{id}/items                 add_to_list
POST /api/v1/me/lists/{id}/items/remove          remove_from_list
GET /api/v1/me/profile                           get_my_profile
POST /api/v1/me/profile                          update_my_profile
POST /api/v1/me/logout                           sign_out
POST /api/v1/me/account/delete                   delete_my_account
POST /api/v1/price-watches/guest                 watch_product_price
POST /api/v1/price-watches/link                  manage_price_watch
POST /api/v1/shops/register                      register_shop
POST /api/v1/deals/shops/verify-ownership        verify_shop_domain
GET /api/v1/shops/mine                           list_my_shops
GET /api/v1/shops/{slug}/statistics              get_shop_statistics
POST /api/v1/cooperation/inquiries               send_cooperation_inquiry
POST /api/v1/contact/messages                    send_contact_message

Pravidla, která platí pro každou odpověď

  • Řadí se jen podle ceny produktu (denní kurz ČNB) a důvěryhodnosti obchodu; doprava do země je u každé nabídky zvlášť a sort=total řadí podle součtu. Žádná placená pozice.
  • Obchod na seznamu ČOI nebo SOI se nikdy nezobrazí. Obchod bez hodnocení nikdy není best.
  • Cena starší než 36 hodin nebo nabídka s neznámou dopravou nikdy není best; každá nabídka nese captured_at a blockers.
  • Zahraniční nabídky nesou cross_border: záruka v EU, vrácení, jazyky podpory.
  • commission_disclosure je součástí každé odpovědi a kupujícímu se musí ukázat.

Příklady požadavků a odpovědí

Každé volání jako curl (REST) a jako tělo MCP JSON-RPC, odpověď zkrácená (pole ukazují první prvek). Testy spouštějí každý příklad proti aplikaci, takže názvy polí jsou skutečné.

search_products · Hledání se stránkováním: produkty odpovídající dotazu, s total_matches a offset.

REST

curl -s "https://fordeal.ai/api/v1/deals/search?query=iphone+16+128&deliver_to_country=CZ&limit=2&offset=0"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_products",
    "arguments": {
      "query": "iphone 16 128",
      "deliver_to_country": "CZ",
      "limit": 2,
      "offset": 0
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "deliver_to": "CZ",
  "currency": "CZK",
  "total_matches": 40,
  "offset": 0,
  "products": [
    {
      "slug": "apple-iphone-16-128-gb",
      "name": "Apple iPhone 16 128 GB",
      "match": "exact",
      "match_note": null,
      "total": 22990,
      "recommended": true,
      "currency": "CZK",
      "goods": 22990,
      "shipping": 0,
      "shipping_known": true,
      "in_stock": true,
      "shops": 1,
      "shop": {
        "slug": "planeo-cz",
        "name": "Planeo Elektro",
        "country": "CZ",
        "trust": "rated"
      },
      "captured_at": "2026-10-12T12:02:37Z"
    }
  ],
  "next_actions": [
    {
      "tool": "find_best_price",
      "description": "Every offer of the first product with the verdict.",
      "params": {
        "query": "Apple iPhone 16 128 GB",
        "deliver_to_country": "CZ"
      }
    }
  ]
}

find_best_price · Nejnižší cena produktu pro dotaz: verdikt, doporučená nabídka se zdrojem, dopravou a časem ověření, všechny nabídky s důvody vyřazení.

REST

curl -s "https://fordeal.ai/api/v1/deals/best-price?query=Apple+iPhone+16+128+GB&deliver_to_country=CZ&locale=en"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "find_best_price",
    "arguments": {
      "query": "Apple iPhone 16 128 GB",
      "deliver_to_country": "CZ",
      "locale": "en"
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "product": {
    "slug": "apple-iphone-16-128-gb",
    "name": "Apple iPhone 16 128 GB",
    "brand": "Apple",
    "category": "mobily",
    "variant": {
      "id": "apple-iphone-16-128-gb",
      "family_id": "line:apple-iphone-16",
      "family_kind": "line",
      "storage": "128 GB",
      "ram": null,
      "color": null,
      "color_id": null,
      "model": [],
      "connectivity": [],
      "size": null
    },
    "variants_url": "/api/v1/deals/products/apple-iphone-16-128-gb/variants"
  },
  "match": "exact",
  "match_note": null,
  "verdict": "buy_now",
  "headline": "Buy now at Planeo Elektro for CZK 22,990 in total.",
  "reasons": [
    "at_90d_low"
  ],
  "warnings": [
    "The shop has customer ratings but no verified-shop badge."
  ],
  "best": {
    "offer_id": "f8edb345-e97e-4599-99e3-3c9240481aee",
    "shop": {
      "slug": "planeo-cz",
      "name": "Planeo Elektro",
      "country": "CZ",
      "trust": "rated",
      "rating": 0.84,
      "rating_source": "google",
      "rating_captured_at": "2026-10-09T11:18:24Z"
    },
    "title": "Apple iPhone 16 128GB Black",
    "source": "scrape",
    "source_name": "planeo-cz-page",
    "price": 22990,
    "currency": "CZK",
    "in_stock": true,
    "condition": "new",
    "delivery_days": null,
    "unknown": [
      {
        "field": "delivery_days",
        "reason": "not_stated"
      }
    ],
    "total": {
      "deliverTo": "CZ",
      "currency": "CZK",
      "goods": 22990,
      "shipping": 0,
      "shippingUnknown": false,
      "shippingApproximate": false,
      "total": 22990,
      "fx": null,
      "crossBorder": false
    },
    "url": "https://fordeal.ai/go/7a2gxvdd36/f8edb345-e97e-4599-99e3-3c9240481aee",
    "direct_url": "https://www.planeo.cz/apple-iphone-16-128gb-black",
    "captured_at": "2026-10-12T12:02:37Z",
    "age_hours": 21.6,
    "stale": false,
    "blockers": []
  },
  "offers": [
    {
      "offer_id": "f8edb345-e97e-4599-99e3-3c9240481aee",
      "shop": {
        "slug": "planeo-cz",
        "name": "Planeo Elektro",
        "country": "CZ",
        "trust": "rated",
        "rating": 0.84,
        "rating_source": "google",
        "rating_captured_at": "2026-10-09T11:18:24Z"
      },
      "title": "Apple iPhone 16 128GB Black",
      "source": "scrape",
      "source_name": "planeo-cz-page",
      "price": 22990,
      "currency": "CZK",
      "in_stock": true,
      "condition": "new",
      "delivery_days": null,
      "unknown": [
        {
          "field": "delivery_days",
          "reason": "not_stated"
        }
      ],
      "total": {
        "deliverTo": "CZ",
        "currency": "CZK",
        "goods": 22990,
        "shipping": 0,
        "shippingUnknown": false,
        "shippingApproximate": false,
        "total": 22990,
        "fx": null,
        "crossBorder": false
      },
      "url": "https://fordeal.ai/go/7a2gxvdd36/f8edb345-e97e-4599-99e3-3c9240481aee",
      "direct_url": "https://www.planeo.cz/apple-iphone-16-128gb-black",
      "captured_at": "2026-10-12T12:02:37Z",
      "age_hours": 21.6,
      "stale": false,
      "blockers": []
    }
  ],
  "hidden_risky_shops": 0,
  "history": {
    "days": 90,
    "currency": "CZK",
    "lowest": 22990,
    "highest": 22990,
    "points": [
      {
        "date": "2026-10-01",
        "price": 22990
      }
    ]
  },
  "deliver_to": "CZ",
  "currency": "CZK",
  "fx_date": "2026-10-12",
  "data_source": "stored",
  "refresh_pending": false,
  "commission_disclosure": "When you buy through a Fordeal link, the shop pays Fordeal a commission. It does not raise your price and it never affects the order: offers are ranked by product price and shop trust only; shipping is shown separately for each offer."
}

get_product · Stejná karta podle ID produktu, jak ji ukazuje stránka produktu.

REST

curl -s "https://fordeal.ai/api/v1/deals/products/apple-iphone-16-128-gb?deliver_to_country=CZ&locale=en"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_product",
    "arguments": {
      "product": "apple-iphone-16-128-gb",
      "deliver_to_country": "CZ",
      "locale": "en"
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "product": {
    "slug": "apple-iphone-16-128-gb",
    "name": "Apple iPhone 16 128 GB",
    "brand": "Apple",
    "category": "mobily",
    "variant": {
      "id": "apple-iphone-16-128-gb",
      "family_id": "line:apple-iphone-16",
      "family_kind": "line",
      "storage": "128 GB",
      "ram": null,
      "color": null,
      "color_id": null,
      "model": [],
      "connectivity": [],
      "size": null
    },
    "variants_url": "/api/v1/deals/products/apple-iphone-16-128-gb/variants"
  },
  "match": "exact",
  "match_note": null,
  "verdict": "buy_now",
  "headline": "Buy now at Planeo Elektro for CZK 22,990 in total.",
  "reasons": [
    "at_90d_low"
  ],
  "warnings": [
    "The shop has customer ratings but no verified-shop badge."
  ],
  "best": {
    "offer_id": "f8edb345-e97e-4599-99e3-3c9240481aee",
    "shop": {
      "slug": "planeo-cz",
      "name": "Planeo Elektro",
      "country": "CZ",
      "trust": "rated",
      "rating": 0.84,
      "rating_source": "google",
      "rating_captured_at": "2026-10-09T11:18:24Z"
    },
    "title": "Apple iPhone 16 128GB Black",
    "source": "scrape",
    "source_name": "planeo-cz-page",
    "price": 22990,
    "currency": "CZK",
    "in_stock": true,
    "condition": "new",
    "delivery_days": null,
    "unknown": [
      {
        "field": "delivery_days",
        "reason": "not_stated"
      }
    ],
    "total": {
      "deliverTo": "CZ",
      "currency": "CZK",
      "goods": 22990,
      "shipping": 0,
      "shippingUnknown": false,
      "shippingApproximate": false,
      "total": 22990,
      "fx": null,
      "crossBorder": false
    },
    "url": "https://fordeal.ai/go/7a2gxvdd36/f8edb345-e97e-4599-99e3-3c9240481aee",
    "direct_url": "https://www.planeo.cz/apple-iphone-16-128gb-black",
    "captured_at": "2026-10-12T12:02:37Z",
    "age_hours": 21.6,
    "stale": false,
    "blockers": []
  },
  "offers": [
    {
      "offer_id": "f8edb345-e97e-4599-99e3-3c9240481aee",
      "shop": {
        "slug": "planeo-cz",
        "name": "Planeo Elektro",
        "country": "CZ",
        "trust": "rated",
        "rating": 0.84,
        "rating_source": "google",
        "rating_captured_at": "2026-10-09T11:18:24Z"
      },
      "title": "Apple iPhone 16 128GB Black",
      "source": "scrape",
      "source_name": "planeo-cz-page",
      "price": 22990,
      "currency": "CZK",
      "in_stock": true,
      "condition": "new",
      "delivery_days": null,
      "unknown": [
        {
          "field": "delivery_days",
          "reason": "not_stated"
        }
      ],
      "total": {
        "deliverTo": "CZ",
        "currency": "CZK",
        "goods": 22990,
        "shipping": 0,
        "shippingUnknown": false,
        "shippingApproximate": false,
        "total": 22990,
        "fx": null,
        "crossBorder": false
      },
      "url": "https://fordeal.ai/go/7a2gxvdd36/f8edb345-e97e-4599-99e3-3c9240481aee",
      "direct_url": "https://www.planeo.cz/apple-iphone-16-128gb-black",
      "captured_at": "2026-10-12T12:02:37Z",
      "age_hours": 21.6,
      "stale": false,
      "blockers": []
    }
  ],
  "hidden_risky_shops": 0,
  "history": {
    "days": 90,
    "currency": "CZK",
    "lowest": 22990,
    "highest": 22990,
    "points": [
      {
        "date": "2026-10-01",
        "price": 22990
      }
    ]
  },
  "deliver_to": "CZ",
  "currency": "CZK",
  "fx_date": "2026-10-12",
  "data_source": "stored",
  "refresh_pending": false,
  "commission_disclosure": "When you buy through a Fordeal link, the shop pays Fordeal a commission. It does not raise your price and it never affects the order: offers are ranked by product price and shop trust only; shipping is shown separately for each offer."
}

product_variants · Varianty produktu se stabilními ID.

REST

curl -s "https://fordeal.ai/api/v1/deals/products/apple-iphone-16-128-gb/variants?deliver_to_country=CZ&locale=en"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "product_variants",
    "arguments": {
      "product": "apple-iphone-16-128-gb",
      "deliver_to_country": "CZ",
      "locale": "en"
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "slug": "apple-iphone-16-128-gb",
  "family_id": "line:apple-iphone-16",
  "family_kind": "line",
  "axes": [
    "storage",
    "color"
  ],
  "currency": "CZK",
  "variants": [
    {
      "id": "apple-iphone-16-128-gb",
      "slug": "apple-iphone-16-128-gb",
      "current": true,
      "storage": "128 GB",
      "size": "128 GB",
      "color": null,
      "color_id": null,
      "total": 22990,
      "in_stock": true,
      "url": "https://fordeal.ai/en/p/apple-iphone-16-128-gb"
    }
  ]
}

price_history · Denní nejnižší cena za 90 dní a odkud každá cena pochází.

REST

curl -s "https://fordeal.ai/api/v1/deals/history/apple-iphone-16-128-gb?days=90&currency=CZK"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "price_history",
    "arguments": {
      "product": "apple-iphone-16-128-gb",
      "days": 90,
      "currency": "CZK"
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "product": {
    "slug": "apple-iphone-16-128-gb",
    "name": "Apple iPhone 16 128 GB",
    "variant": {
      "id": "apple-iphone-16-128-gb",
      "family_id": "line:apple-iphone-16",
      "family_kind": "line",
      "storage": "128 GB",
      "ram": null,
      "color": null,
      "color_id": null,
      "model": [],
      "connectivity": [],
      "size": null
    }
  },
  "history": {
    "days": 90,
    "currency": "CZK",
    "lowest": 22990,
    "highest": 22990,
    "points": [
      {
        "date": "2026-10-01",
        "price": 22990
      }
    ]
  },
  "offers": [
    {
      "shop": "Planeo Elektro",
      "shop_slug": "planeo-cz",
      "title": "Apple iPhone 16 128GB Black",
      "price": 22990,
      "currency": "CZK",
      "condition": "new",
      "source_name": "planeo-cz-page",
      "in_history": true,
      "captured_at": "2026-10-12T12:02:37Z"
    }
  ]
}

compare_digital · Digitální služby podle ceny za měsíc, každá s oficiálním ceníkem a datem ověření.

REST

curl -s "https://fordeal.ai/api/v1/digital/compare?category=ai-chat&deliver_to_country=CZ"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "compare_digital",
    "arguments": {
      "category": "ai-chat",
      "deliver_to_country": "CZ"
    }
  }
}

Odpověď, HTTP 200, zkrácená

{
  "category": "ai-chat",
  "currency": "CZK",
  "fx_date": "2026-10-12",
  "rows": [
    {
      "id": "claude-free",
      "provider": "Anthropic",
      "service": "Claude",
      "plan": "Free",
      "monthly": {
        "amount": 0,
        "currency": "EUR"
      },
      "monthlyLocal": {
        "amount": 0,
        "currency": "CZK",
        "rate": 24.39,
        "rateDate": "2026-10-12"
      },
      "sourceUrl": "https://claude.com/pricing",
      "verifiedOn": "2026-10-05"
    }
  ]
}

price_history · Neznámý produkt: HTTP 404, error.code not_found.

REST

curl -s "https://fordeal.ai/api/v1/deals/history/no-such-product"

MCP tools/call (POST na MCP endpoint)

POST https://fordeal.ai/mcp
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "price_history",
    "arguments": {
      "product": "no-such-product"
    }
  }
}

Odpověď, HTTP 404, zkrácená

{
  "error": {
    "code": "not_found",
    "message": "unknown product no-such-product",
    "fix": "Use `product.slug` from a find_best_price answer."
  }
}

/deals/search · Chybný parametr: HTTP 400, error.code validation se seznamem chyb.

REST

curl -s "https://fordeal.ai/api/v1/deals/search?query=iphone&limit=abc"

Odpověď, HTTP 400, zkrácená

{
  "error": {
    "code": "validation",
    "message": "invalid request: limit: Invalid input: expected number, received string",
    "fix": "Fix the listed fields. GET /api/openapi.json documents every parameter.",
    "details": {
      "issues": [
        "limit: Invalid input: expected number, received string"
      ]
    }
  }
}

/deals/shops/compared · Překročený limit: HTTP 429 s hlavičkou Retry-After.

REST

curl -s "https://fordeal.ai/api/v1/deals/shops/compared?country=CZ"

Odpověď, HTTP 429, zkrácená

{
  "error": {
    "code": "rate_limited",
    "message": "rate limit of 10 requests per minute reached",
    "fix": "Wait 42 s and retry (Retry-After). Without an API key the limit is 10 requests per minute per IP address; generate a free key at https://fordeal.ai/agents#klic and send Authorization: Bearer <key> for 60 per minute.",
    "details": {
      "limit_per_min": 10,
      "retry_after_seconds": 42,
      "window_seconds": 60,
      "limit": 10,
      "remaining": 0,
      "reset": 42,
      "reset_at": "2026-10-28T09:15:00.000Z",
      "anonymous": true,
      "get_a_key": "https://fordeal.ai/agents#klic"
    }
  }
}

Stránkování, limity, chyby a neznámé hodnoty

Stránkování

search_products a GET /deals/searchlimit (1 až 100, výchozí 20) a offset (výchozí 0); total_matches počítá všechny shody před stránkováním.
GET /deals/productslimit až 500 a offset; total počítá odpovídající produkty. facets=true přidá značky, obchody, cenové rozpětí a hodnoty parametrů za celý vyfiltrovaný seznam.
Stránka za koncem vrátí prázdný seznam se stejným total.

Limity

Bez klíče10 požadavků za minutu na IP adresu, volání MCP nástrojů a REST dohromady.
S klíčem60 požadavků za minutu.
Po překročeníHTTP 429 s hlavičkou Retry-After v sekundách, error.code rate_limited a error.details.retry_after_seconds, i přes MCP.

Chyby

  • Každá chyba má tvar {"error":{"code","message","fix"}}: code je stálý a strojově čitelný, fix říká, co změnit.
  • validation 400 (details.issues vypíše chybné parametry), country_not_supported 400, invalid_input 400, unauthorized 401, forbidden 403, not_found 404, rate_limited 429, not_available 503.
  • Přes MCP je chyba výsledek nástroje s isError: true a stejným tělem ve structuredContent.

Neznámé hodnoty, odhady a zastaralá data

Hodnota, kterou neznáme, je null a říká proč: každá nabídka uvádí unknown[] (delivery_days not_stated, shipping not_stated nebo approximate, shop_rating unrated).
total.shippingUnknown truecena celkem je jen cena zboží a nabídka nikdy není best; total.shippingApproximate true: doprava je nejnižší sazba, kterou obchod uvádí, tedy odhad.
Každá nabídka nese captured_at a age_hours; stale je true po 36 hodinách a taková nabídka nikdy není best; refresh_pending je true, dokud se ceny znovu načítají.
match close s match_noteprodukt je nejbližší varianta, ne ta požadovaná; přesná ID dává product.variant a product_variants.
history.since je první den s datyokno 90 dní může mít méně dní.

Pole odpovědi, odhady a stránky

  • labels u každé nabídky, stejná slova jako na webu: lowest_price jen u nejnižší ceny produktu mezi zobrazenými novými nabídkami; recommended u best, když to není nejnižší cena produktu (nikdy ji nenazývejte nejlevnější); lowest_verified_total u nejnižšího celku s uvedenou (ne „od“) dopravou, když to není nejnižší cena produktu.
  • shipping_is_estimate true: doprava je jen sazba „od“ nebo neznámá, takže celek je dolní mez; saving_is_estimate true (savings_vs_best nabídky, recommended_surcharge): rozdíl stojí na takové dopravě. Říkejte „odhadovaná úspora při uvedené minimální dopravě“, nikdy jistá úspora.
  • saving_kind je vždy „estimate“ tam, kde je uvedena úspora nebo rozdíl (savings_vs_best nabídky, recommended_surcharge, saving u zahraniční nabídky, saving_year u energií): jde o rozdíl při cenách a dopravě zjištěných ve dnech uvedených v saving_basis, nikdy o zaručený výsledek. Pište „odhadovaná úspora“ a uveďte datum zjištění, ne „ušetříte“.
  • price_verdict {level low|usual|high|short_history|stale, percentile, days, basis} u find_best_price, get_product a price_history hodnotí poslední cenu proti posledním 90 dnům našich vlastních denních minim. Při historii kratší než 14 dnů nehodnotí (short_history); nikdy to není tvrzení o slevě.
  • daily_deals a GET /deals/daily vracejí největší naměřené poklesy za posledních 24 hodin u hodnocených obchodů, rozložené mezi obchody a kategorie (max_per_shop, web žádá 4; také category, country, min_percent); fond pro Slovensko tvoří eurové obchody, které tam doručují.
  • report_issue a POST /deals/issues berou offer_id dotčené nabídky (z karty), takže chybná cena nebo varianta jednoho řádku dojde člověku, který frontu čte, rovnou s ním; web má stejné tlačítko pro nahlášení u každého řádku nabídky.
  • Stránky „nejlevnější X“ (/nejlevnejsi/<model>) a „X vs Y“ (/srovnani/<a>-vs-<b>) nemají vlastní koncové body: čtou GET /deals/products (query, category, slugs, deliver_to_country; search_products, product_variants), u služeb a operátorů compare_digital a compare_mobile. Stejnou otázku položíte stejnými nástroji.
  • Odkazy na poskytovatele na srovnání v /digitalni vedou přes /go/plan/<id>, počítané přesměrování (klíč tarifu, typ stránky, naše stránka; nic osobního; roboti označeni). GET /deals/plan-clicks/{kind}/{id} (kind plan|energy|insurance|mobile) vrátí adresu poskytovatele bez počítání; vlastní odkaz nabídky je její url (/go/<shop>/<offer_id>).
  • GET /deals/coverage (po obchodech) a GET /deals/coverage/groups (po skupinách kategorií) dávají dnešní pokrytí: produkty s uloženou cenou, obchody s cenami a obchody čekající na feed. Čísla se mění denně, proto je čtěte, místo abyste citovali číslo z dokumentu.