Úvod
API vracia štatistiky vyhľadávania vášho e-shopu: to, čo vidíte v prehľade na search.ragnetiq.com, a navyše každú jednotlivú zaznamenanú udalosť (hľadanie, preklik, pridanie do košíka) a každú objednávku, ktorú vyhľadávanie zachytilo. Dáta sú vaše: môžete si ich stiahnuť do vlastného reportingu, dátového skladu alebo BI nástroja.
Základná adresa je https://search.ragnetiq.com/api/stats/v1. Všetky odpovede sú JSON v UTF-8, všetky časy sú ISO 8601 v UTC. Požiadavky sú iba GET; API nič nemení.
- Jeden kľúč pokrýva všetky vaše obchody (napríklad slovenskú aj českú verziu).
- Obdobie si vyberáte parametrami
fromato, najviac 366 dní naraz. - Agregované prehľady (
/summary,/queries,/products) sú rovnaké čísla ako v administrácii; surové dáta (/events,/purchases) obsahujú všetko, čo sa zaznamenalo. - Neukladáme žiadne osobné údaje zákazníkov: identifikátory návštevníka a relácie sú náhodné, číslo objednávky je uložené len ako odtlačok (hash).
Autentifikácia
Kľúč vám vystaví Ragnetiq. Má tvar ss_ a 64 hexadecimálnych znakov. Posielajte ho v hlavičke Authorization pri každej požiadavke:
Authorization: Bearer ss_9f2c1a7e…Kľúč je tajný ako heslo. Používajte ho len zo servera (cron, backend, ETL), nikdy nie v prehliadači ani v mobilnej aplikácii. Ak unikne, napíšte nám: starý kľúč odvoláme a vystavíme nový; odvolaný kľúč prestane fungovať okamžite.
Neplatný, chýbajúci alebo odvolaný kľúč dostane odpoveď 401 unauthorized. Kľúč, ktorý nemá prístup k požadovanému obchodu, dostane 403 forbidden.
Pravidlá spoločné pre všetky API Ragnetiq (kľúče, stránkovanie, limity, chyby, verzie) sú aj na jednej stránke: Základy API.
Spoločné parametre a pravidlá
Parametre v adrese
| Parameter | Hodnota | Význam |
|---|---|---|
shop | id obchodu, voliteľný | Obmedzí dáta na jeden alebo viac obchodov: ?shop=a, ?shop=a&shop=b alebo ?shop=a,b. Bez parametra dostanete všetky obchody kľúča spolu. Id nájdete v /shops. |
from | YYYY-MM-DD, voliteľný | Prvý deň obdobia (vrátane). Predvolene 29 dní pred to. |
to | YYYY-MM-DD, voliteľný | Posledný deň obdobia (vrátane). Predvolene dnes. Obdobie môže mať najviac 366 dní. |
after, limit | celé čísla | Stránkovanie surových dát, pozri nižšie. |
Deň začína a končí o polnoci v Bratislave (Europe/Bratislava), rovnako ako v administrácii; každá odpoveď to uvádza v poli timezone. Keď sčítate dáta jednotlivých obchodov, dostanete to isté, čo vráti požiadavka bez shop, okrem tržieb v rôznych menách, ktoré sa nesčítavajú.
Stránkovanie
/events a /purchases vracajú najviac 1 000 záznamov naraz, zoradených od najstaršieho. Odpoveď obsahuje next: id posledného záznamu strany, alebo null, keď už ďalšia strana nie je. Ďalšiu stranu si vyžiadate parametrom after=<next>. Veľkosť strany určuje limit (1 – 1 000, predvolene 1 000).
Id záznamov sú stále a rastú s časom, takže after môžete použiť aj na prírastkové sťahovanie: zapamätajte si posledné id a nabudúce začnite od neho.
Limity
- Najviac 120 požiadaviek za minútu na jeden kľúč; pri prekročení dostanete
429 rate_limited. - Obdobie najviac 366 dní; dlhšiu históriu stiahnete po častiach.
- Dáta sú dostupné do niekoľkých sekúnd po tom, čo sa udalosť stala, takže čísla za dnešný deň sa priebežne menia. Pre uzavreté čísla sťahujte včerajší deň a staršie.
Chyby
Chybová odpoveď má vždy rovnaký tvar: HTTP stavový kód, pole error so strojovým kódom a message s vysvetlením.
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
{ "error": "forbidden", "message": "Kľúč nemá prístup k niektorému z požadovaných obchodov." }| HTTP | error | Kedy |
|---|---|---|
| 400 | invalid_period | from/to nie sú dátumy, to je pred from, alebo obdobie presahuje 366 dní. |
| 400 | invalid_shop, invalid_param | Nesprávny tvar parametra shop, after, limit alebo type. |
| 401 | unauthorized | Chýbajúci, neplatný alebo odvolaný kľúč. |
| 403 | forbidden | Kľúč nepokrýva niektorý z obchodov v shop. |
| 429 | rate_limited | Viac ako 120 požiadaviek za minútu. Počkajte a skúste znova. |
| 502, 503 | upstream, unavailable | Dočasný výpadok na našej strane. Zopakujte požiadavku neskôr. |
Obchody
Obchody, ku ktorým má kľúč prístup. Ich id používate v parametri shop a nájdete ho pri každom zázname v surových dátach.
curl "https://search.ragnetiq.com/api/stats/v1/shops" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": [
{ "id": "demo-shop", "name": "Demo Shop", "domains": ["www.demo-shop.example", "demo-shop.example"] }
]
}Súhrn
Čísla z prvej obrazovky prehľadu: súčty za obdobie, to isté za rovnako dlhé predchádzajúce obdobie (pre porovnanie), hodnoty po dňoch, cesta od hľadania k objednávke a rozdelenie podľa zariadení.
curl "https://search.ragnetiq.com/api/stats/v1/summary?shop=demo-shop&from=2026-10-01&to=2026-10-15" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": ["demo-shop"],
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"totals": {
"searches": 10638,
"searchers": 6489,
"zero": 457,
"not_confident": 638,
"serp": 5851,
"with_click": 4681,
"clicks": 7215,
"carts": 655,
"latency_p50": 412,
"orders": 465,
"orders_search": 186,
"revenue_search": 34782.4,
"currency": "EUR",
"revenue_by_currency": [{ "currency": "EUR", "value": 34782.4 }]
},
"previous": { "searches": 9574, "…": "…" },
"daily": [
{ "day": "2026-10-01", "searches": 712, "clicks": 486, "carts": 41 },
{ "day": "2026-10-02", "searches": 698, "clicks": 471, "carts": 44 }
],
"flow": {
"zero": { "total": 457, "ordered": 4 },
"no_click": { "total": 5500, "ordered": 15 },
"click": { "total": 4026, "ordered": 65 },
"cart": { "total": 655, "ordered": 102 }
},
"devices": { "desktop": 4468, "mobile": 6170 },
"recommendations": {
"current": {
"views": 18420, "clicks": 1104, "carts": 196, "orders": 61, "revenue": 11240, "currency": "EUR",
"blocks": [
{ "block": "picks", "views": 9120, "clicks": 471, "carts": 72, "orders": 24, "revenue": 4310 },
{ "block": "similar", "views": 5410, "clicks": 402, "carts": 68, "orders": 21, "revenue": 3980 }
]
},
"previous": { "views": 16900, "clicks": 980, "carts": 171, "orders": 52, "revenue": 9870, "currency": "EUR", "blocks": [] }
}
}totals a previous
| Pole | Typ | Význam |
|---|---|---|
searches | číslo | Počet hľadaní. Jedno hľadanie = jeden zámer: našepkávač a následný Enter s rovnakými slovami sa počítajú raz. |
searchers | číslo | Počet rôznych návštevníkov, ktorí hľadali. |
zero | číslo | Hľadania bez jediného výsledku. |
not_confident | číslo | Hľadania, pri ktorých vyhľadávanie nenašlo presnú zhodu a ukázalo najpodobnejšie produkty. |
serp | číslo | Hľadania, ktoré sa dostali až na stránku výsledkov (nielen do našepkávača). |
with_click | číslo | Hľadania, po ktorých zákazník otvoril aspoň jeden produkt. |
clicks | číslo | Všetky prekliky na produkty z výsledkov a z našepkávača. |
carts | číslo | Pridania do košíka priamo zo zoznamu výsledkov alebo z našepkávača. |
latency_p50 | číslo | null | Medián odpovede vyhľadávania v milisekundách (čas na serveri). |
orders | číslo | Všetky objednávky, ktoré vyhľadávanie zachytilo na stránke s poďakovaním (aj bez hľadania). |
orders_search | číslo | Objednávky z návštev, v ktorých zákazník počas 24 hodín pred objednávkou hľadal. |
revenue_search | číslo | Hodnota objednávok z orders_search, s DPH, v mene obchodu. |
currency | text | null | Mena tržieb. null, keď obchody v požiadavke používajú rôzne meny; vtedy čítajte revenue_by_currency. |
revenue_by_currency | pole | Tržby po menách: [{ currency, value }]. |
daily
Jeden záznam pre každý deň obdobia (aj s nulami): day (YYYY-MM-DD), searches, clicks, carts.
flow
Každé hľadanie obdobia patrí do jednej vetvy podľa toho, čo zákazník so zoznamom výsledkov urobil: zero (nič sa nenašlo), no_click (výsledky boli, neklikol), click (otvoril produkt), cart (pridal do košíka priamo zo zoznamu). Pri každej vetve je total (počet hľadaní) a ordered (koľko objednávok z tej istej návštevy sa k týmto hľadaniam pripísalo). Súčet ordered je orders_search.
devices
Počet hľadaní podľa zariadenia: desktop, mobile, prípadne unknown (obchody, kde sa zariadenie nezaznamenáva).
recommendations
Bloky odporúčaní v obchode (ak ich obchod používa; inak null). current je za zvolené obdobie, previous za rovnako dlhé predchádzajúce obdobie.
| Pole | Typ | Význam |
|---|---|---|
views | číslo | Koľkokrát sa blok odporúčaní zobrazil (raz na zobrazenie stránky a blok). |
clicks | číslo | Otvorenia produktu z bloku odporúčaní. |
carts | číslo | Pridania do košíka priamo z bloku odporúčaní. |
orders | číslo | Objednávky z návštev, v ktorých zákazník počas 24 hodín pred objednávkou klikol na odporúčanie. |
revenue, currency | číslo, text | null | Hodnota týchto objednávok s DPH a ich mena. |
blocks | pole | To isté po blokoch: block (picks hlavná stránka, similar podobné na detaile, cart košík, recent naposledy prezerané), views, clicks, carts, orders, revenue (objednávka sa pripíše bloku posledného kliku pred ňou). |
Hľadané výrazy
Tri zoznamy, každý najviac 100 výrazov. Výrazy sú normalizované (malé písmená, bez diakritiky, jedna medzera), aby sa „Vŕtačka“ a „vrtacka“ počítali spolu.
curl "https://search.ragnetiq.com/api/stats/v1/queries?from=2026-10-01&to=2026-10-15" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"top": [
{ "query": "vrtacka", "searches": 1912, "zero": 0, "with_click": 1190, "carts": 64 }
],
"zero_results": [
{ "query": "vrtackaa", "searches": 64 }
],
"no_click": [
{ "query": "nahradny diel 1234", "searches": 38 }
]
}| Zoznam | Polia | Význam |
|---|---|---|
top | query, searches, zero, with_click, carts | Najhľadanejšie výrazy: počet hľadaní, koľko z nich bolo bez výsledku, koľko skončilo preklikom a koľko pridaní do košíka zo zoznamu. |
zero_results | query, searches | Výrazy, pri ktorých sa nenašlo nič: kandidáti na synonymá alebo doplnenie sortimentu. |
no_click | query, searches | Výrazy, pri ktorých sa produkty zobrazili, ale nikto na žiadny neklikol. searches počíta len hľadania s výsledkami. |
Produkty
Najviac 100 produktov, na ktoré zákazníci z vyhľadávania klikli alebo ich pridali do košíka, zoradených podľa preklikov.
curl "https://search.ragnetiq.com/api/stats/v1/products?shop=demo-shop" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": ["demo-shop"],
"from": "2026-09-16",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"products": [
{ "id": "demo-shop:a1b2c3d4-…", "shop": "demo-shop", "product_id": "a1b2c3d4-…", "name": "Aku vŕtačka 18 V", "clicks": 412, "carts": 61 }
]
}product_id je identifikátor produktu vo vašej platforme (napríklad GUID alebo kód produktu), takže si ho viete spojiť s vlastným katalógom. name je názov v čase posledného prekliku.
Udalosti (surové dáta)
Každá zaznamenaná udalosť vyhľadávania, od najstaršej, po stránkach. Toto je úplný záznam: všetko, čo agregované prehľady počítajú, sa dá odvodiť odtiaľto.
| Parameter | Hodnota | Význam |
|---|---|---|
type | search, click, cart, article, error, reco_view, reco_click, reco_cart | Voliteľne iba jeden typ udalosti. |
after | číslo | Id posledného záznamu predchádzajúcej strany (next). Predvolene 0. |
limit | 1 – 1000 | Veľkosť strany. Predvolene 1 000. |
curl "https://search.ragnetiq.com/api/stats/v1/events?from=2026-10-01&to=2026-10-15&type=search&limit=500" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"type": null,
"items": [
{
"id": 48213,
"shop": "demo-shop",
"occurred_at": "2026-10-14T08:21:36.412Z",
"type": "search",
"surface": "autocomplete",
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"search_id": "c2a4f8d1-…",
"query": "aku vŕtačka",
"query_norm": "aku vrtacka",
"result_count": 42,
"confident": true,
"corrected": null,
"filters": null,
"product_id": null,
"product_name": null,
"position": null,
"server_ms": 184,
"client_ms": 412,
"device": "desktop",
"extra": null
},
{
"id": 48214,
"shop": "demo-shop",
"occurred_at": "2026-10-14T08:21:41.907Z",
"type": "click",
"surface": "autocomplete",
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"search_id": "c2a4f8d1-…",
"query": "aku vŕtačka",
"query_norm": "aku vrtacka",
"result_count": null,
"confident": null,
"corrected": null,
"filters": null,
"product_id": "a1b2c3d4-…",
"product_name": "Aku vŕtačka 18 V",
"position": 1,
"server_ms": null,
"client_ms": null,
"device": "desktop",
"extra": null
}
],
"next": null
}Polia udalosti
| Pole | Typ | Význam |
|---|---|---|
id | číslo | Stále, rastúce id záznamu; slúži na stránkovanie. |
shop | text | Id obchodu. |
occurred_at | čas | Kedy sa udalosť stala (UTC). |
type | text | search hľadanie, click otvorenie produktu zo zoznamu, cart pridanie do košíka zo zoznamu, article otvorenie článku z výsledkov, error chyba vyhľadávania (len niektoré platformy), reco_view zobrazenie bloku odporúčaní, reco_click otvorenie produktu z odporúčaní, reco_cart pridanie do košíka z odporúčaní. |
surface | text | autocomplete našepkávač, results stránka výsledkov, reco blok odporúčaní. |
visitor_id | uuid | Náhodný identifikátor prehliadača (dlhodobý). Nie je to osoba. |
session_id | uuid | Náhodný identifikátor návštevy (karta prehliadača, prípadne 30 minút nečinnosti). |
search_id | uuid | null | Spája udalosti jedného hľadania: hľadanie, jeho prekliky a košíky majú rovnaké search_id. |
query | text | null | Hľadaný výraz, ako ho zákazník napísal (do 200 znakov). |
query_norm | text | null | Normalizovaný výraz (malé písmená, bez diakritiky). |
result_count | číslo | null | Počet nájdených produktov (pri search). |
confident | boolean | null | false = presná zhoda sa nenašla, zobrazili sa najpodobnejšie produkty. |
corrected | text | null | Oprava preklepu, ktorú vyhľadávanie použilo. |
filters | objekt | null | Filtre aktívne pri hľadaní (značka, kategória, cena, skladom…). |
product_id, product_name | text | null | Produkt pri click a cart. |
position | číslo | null | Poradie produktu v zozname (od 1), pri click a cart. |
server_ms, client_ms | číslo | null | Trvanie hľadania na serveri a v prehliadači, v milisekundách. |
device | text | null | desktop, mobile, alebo null, keď sa nezaznamenáva. |
extra | objekt | null | Doplnkové polia špecifické pre platformu obchodu (napríklad trh, režim vyhľadávania, množstvo pri pridaní do košíka, adresa článku, pri odporúčaniach blok, algoritmus a produkt, pre ktorý bolo odporúčanie vytvorené). Štruktúra sa môže líšiť podľa obchodu. |
Objednávky (surové dáta)
Objednávky, ktoré vyhľadávanie zachytilo na stránke s poďakovaním, od najstaršej, po stránkach (after, limit ako pri udalostiach). Každá objednávka je tu raz.
curl "https://search.ragnetiq.com/api/stats/v1/purchases?from=2026-10-01&to=2026-10-15" \
-H "Authorization: Bearer ss_VAS_KLUC"{
"shops": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"items": [
{
"id": 931,
"shop": "demo-shop",
"occurred_at": "2026-10-14T09:02:11.055Z",
"order_hash": "7d2dd5fa939d8b5a…",
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"value": 606.32,
"currency": "EUR",
"items": [{ "id": "a1b2c3d4-…", "quantity": 1, "price": 606.32 }],
"extra": null,
"after_search": true
}
],
"next": null
}| Pole | Typ | Význam |
|---|---|---|
id | číslo | Stále, rastúce id záznamu; slúži na stránkovanie. |
shop | text | Id obchodu. |
occurred_at | čas | Kedy bola objednávka zachytená (UTC). |
order_hash | text | Odtlačok čísla objednávky (SHA-256). Samotné číslo neukladáme; na spárovanie s vaším systémom použite items a čas. |
visitor_id, session_id | uuid | Rovnaké identifikátory ako pri udalostiach: podľa nich sa objednávka spája s hľadaním. |
value | číslo | null | Hodnota objednávky s DPH. |
currency | text | null | Mena objednávky. |
items | pole | Položky objednávky: [{ id, quantity, price }], kde id je identifikátor produktu ako v udalostiach. Niektoré platformy posielajú len produkt, ktorý prišiel z vyhľadávania. |
after_search | boolean | true, keď v tej istej návšteve zákazník počas 24 hodín pred objednávkou hľadal. Práve tieto objednávky tvoria orders_search v súhrne. |
extra | objekt | null | Doplnkové polia špecifické pre platformu. |
Príklady
Odporúčaný postup: raz denne (napríklad ráno) si stiahnite /summary za včerajšok pre denné reporty a /events + /purchases prírastkovo od posledného id, ktoré ste spracovali. Kľúč držte v premennej prostredia, nie v kóde.
const BASE = "https://search.ragnetiq.com/api/stats/v1";
const headers = { Authorization: `Bearer ${process.env.SMARTSEARCH_API_KEY}` };
async function get(path, params = {}) {
const url = new URL(BASE + path);
for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const res = await fetch(url, { headers });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
return res.json();
}
// súhrn za september
const summary = await get("/summary", { from: "2026-09-01", to: "2026-09-30" });
console.log(summary.totals.searches, summary.totals.orders_search);
// všetky udalosti po stránkach
let after = 0;
do {
const page = await get("/events", { from: "2026-09-01", to: "2026-09-30", after, limit: 1000 });
for (const e of page.items) store(e); // vaša logika
after = page.next;
} while (after);import os, requests
BASE = "https://search.ragnetiq.com/api/stats/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SMARTSEARCH_API_KEY']}"}
def get(path, **params):
r = requests.get(BASE + path, headers=HEADERS, params=params, timeout=30)
r.raise_for_status()
return r.json()
summary = get("/summary", **{"from": "2026-09-01", "to": "2026-09-30"})
print(summary["totals"]["searches"])
after = 0
while after is not None:
page = get("/events", **{"from": "2026-09-01", "to": "2026-09-30", "after": after, "limit": 1000})
for event in page["items"]:
... # vaša logika
after = page["next"]Zmeny
| Dátum | Verzia | Zmena |
|---|---|---|
| 18. 10. 2026 | v1 | Dni sa počítajú v časovom pásme Europe/Bratislava (predtým UTC), rovnako ako v administrácii; odpovede majú pole timezone. Bez from sa obdobie začína 29 dní pred to. |
| 16. 10. 2026 | v1 | /summary má recommendations (bloky odporúčaní); /events pozná typy reco_view, reco_click, reco_cart. |
| 16. 10. 2026 | v1 | Prvé vydanie: /shops, /summary, /queries, /products, /events, /purchases. |
Verzia je v adrese (/v1). Nové polia môžeme pridávať kedykoľvek; existujúce polia a ich význam v rámci verzie nemeníme. O prípadnej novej verzii vás vopred informujeme.