Today Automate logo
Polska platforma e-commerce · Dokumentacja

Shoper API – Kompletny Przewodnik

Gotowe przykłady w Python, PHP i JavaScript. Autoryzacja tokenem, zamówienia, produkty.

Token AuthREST JSONPolska platformaSelf-hosted

Base URL

{shop}.shoper.pl/webapi/rest/

Autoryzacja

Authorization: {token} (sesja 1h)

Paginacja

page + limit (max 50)

Shoper REST API

Shoper to popularna polska platforma SaaS dla sklepów internetowych. REST API umożliwia zarządzanie zamówieniami, produktami, klientami i stanami magazynowymi. Token sesji odnawiany jest każdą godziną.

1. Autoryzacja – token sesji

Shoper API nie używa stałych kluczy API – każda sesja wymaga pobrania tymczasowego tokenu przez POST na /webapi/rest/auth. Token wygasa po godzinie.

import requests

SHOP_URL  = "https://twojsklep.shoper.pl"
LOGIN     = "TWOJ_LOGIN_API"
PASSWORD  = "TWOJE_HASLO_API"

def pobierz_token() -> str:
    """Pobiera token sesji Shoper API (ważny 1 godzinę)."""
    resp = requests.post(
        f"{SHOP_URL}/webapi/rest/auth",
        json={"login": LOGIN, "pass": PASSWORD},
    )
    resp.raise_for_status()
    token = resp.json()["token"]
    print(f"Token uzyskany: {token[:20]}...")
    return token

TOKEN = pobierz_token()

def shoper_get(endpoint: str, params: dict = None) -> dict:
    resp = requests.get(
        f"{SHOP_URL}/webapi/rest/{endpoint}",
        headers={"Authorization": TOKEN},
        params=params or {},
    )
    resp.raise_for_status()
    return resp.json()

def shoper_put(endpoint: str, data: dict) -> dict:
    resp = requests.put(
        f"{SHOP_URL}/webapi/rest/{endpoint}",
        headers={"Authorization": TOKEN, "Content-Type": "application/json"},
        json=data,
    )
    resp.raise_for_status()
    return resp.json()

2. Pobieranie zamówień

Shoper API zwraca max 50 rekordów na stronę. Iteruj po stronach używając parametrów page i limit.

# Pobierz zamówienia Shoper z paginacją
def pobierz_zamowienia(token_func, page: int = 1, limit: int = 50) -> dict:
    TOKEN = token_func()
    return shoper_get(f"orders?page={page}&limit={limit}&filters[status_id]=1")

# Pobierz wszystkie zamówienia
TOKEN   = pobierz_token()
strona  = 1
limit   = 50
wszystkie = []

while True:
    wynik = shoper_get(f"orders?page={strona}&limit={limit}", None)
    lista = wynik.get("list", [])
    wszystkie.extend(lista)
    print(f"Strona {strona}: {len(lista)} zamówień | łącznie: {len(wszystkie)}")

    if len(lista) < limit:
        break
    strona += 1

print(f"Łącznie: {len(wszystkie)} zamówień")
for zam in wszystkie[:3]:
    print(
        "ID: " + str(zam["order_id"]) +
        " | " + zam.get("delivery_firstname", "") + " " + zam.get("delivery_lastname", "") +
        " | " + str(zam.get("order_total", "?")) + " PLN"
    )

Potrzebujesz integracji Shoper na zamówienie?

Budujemy integracje Shoper z BaseLinker, hurtowniami, ERP i systemami logistycznymi. Pierwsza konsultacja bezpłatna.

FAQ

Jak skonfigurować dostęp do Shoper API?
W panelu Shoper: Konfiguracja → Ustawienia zaawansowane → Dostęp API. Utwórz konto API z loginem i hasłem. Token sesji uzyskujesz przez POST /webapi/rest/auth – jest ważny 1 godzinę.
Jak działa paginacja w Shoper API?
Shoper API stosuje paginację przez parametry page (numer strony, od 1) i limit (max 50). Odpowiedź zawiera pole count z całkowitą liczbą rekordów, co pozwala obliczyć liczbę stron.
Czy Shoper API obsługuje webhooks?
Shoper oferuje powiadomienia HTTP (webhooki) od wersji Enterprise. Konfiguruje się je w panelu: Ustawienia → Powiadomienia HTTP. Dla planów basic zalecamy polling przez API z getOrdersChanges.
Jak zsynchronizować stany magazynowe Shoper z hurtownią?
Przez endpoint PUT /webapi/rest/products/{id} aktualizujesz pole stock z nową ilością. Dla masowej aktualizacji iteruj po produktach i aktualizuj jeden po drugim – Shoper nie ma batch endpoint.
Dotted

Skontaktuj się z nami

Wyrażam zgodę na przetwarzanie danych oraz akceptuję Politykę Prywatności

Kontakt

Numer telefonu

+48 697 322 226