API

Elgiganten API: priser i kronor, kampanjer och butikslager från elgiganten.se i JSON

API:et hämtar sortimentet på elgiganten.se utan inloggning och lämnar varje artikel som JSON: pris i kronor med och utan moms, tidigare pris och rabatt vid nedsättning, Club-pris när det finns, kampanjtexten med sista giltighetsdag, EAN, tillverkarens artikelnummer, energiklass och betyg. Lagerstatus finns på två nivåer: hur mycket som finns för leverans på webben och, i `product`, lagernivån i varje enskild butik, från Kiruna till Malmö. Det är det som behövs för att jämföra priser under en kampanjvecka och samtidigt se var varan faktiskt går att hämta. Leverantörer och säljare på Elgigantens marknadsplats som vill lägga upp produkter eller hantera ordrar har ingen nytta av det här: API:et läser bara den publika katalogen från köparens sida. Samma API täcker även Elgiganten i Danmark, Elkjøp i Norge och Gigantti i Finland, men den här sidan handlar om Sverige (`"country": "se"`, som också är standard).

Endpoints

endpointVad som kommer tillbakaObligatoriska
searchSök på ord, kategori (id som PT115 eller namn som ”Tvättmaskin”) eller märke, med prisintervall i kronor, i lager på webben, i lager i en viss butik, bara nedsatt, säljare eller marknadsplats och lägsta betyg. Varje rad har sku, EAN, pris med och utan moms, tidigare pris, rabatt, Club-pris, lagernivå på webben, antal butiker med lager, hämtning i butik, kategorier, energiklass och kampanjtext. Upp till 100 rader per sida.alla valfria
productEn artikel komplett via sku eller produktens URL: alla priser, lagernivå och nästa inleverans på webben, lager per butik med butiksnamn och ort, antal visningsexemplar, kort beskrivning, säljpunkter, märkta specifikationer, delbetalningsplaner när de finns och releasedatum.sku
storesButikerna i Sverige med id, namn, adress, postnummer, ort, koordinater och om varor kan hämtas där. Id:t används i `store_id` och i lagret per butik. Filtrera med `city`.alla valfria

Varje anrop debiteras i krediter. Misslyckade och blockerade anrop är gratis.

Fungerande exempel

Sökningen gjordes den 28 oktober 2026, med kampanjer som gällde till söndag 1 november, söndag 8 november, söndag 29 november och torsdag 24 december. Av 24 nedsatta träffar på ”tv 55 tum” hade bara 10 storleken 55 tum i titeln; resten var mellan 43 och 85 tum, så sökorden fungerar inte som storleksfilter. 15 av de 24 hade `online_stock_level` "0", och alla 15 fanns ändå i minst en butik. Samsung Q8F på 55 tum kostade 5 990 kr i stället för 15 990 kr (−62,5 %). I `product` stod den i lager i 5 av 168 butiker: Alingsås, Gislaved, Hudiksvall, Skellefteå och Varberg. `price_ex_vat` är priset utan 25 % moms, i alla 24 rader exakt pris delat med 1,25.

Förfrågan
curl -X POST https://api.reefapi.com/elgiganten/v1/search \
  -H "x-api-key: DIN_API_NYCKEL" \
  -H "content-type: application/json" \
  -d '{"query": "tv 55 tum", "country": "se", "on_sale": true, "page_size": 24}'
Svar (förkortat)
{
  "ok": true,
  "data": {
    "results": [
      {
        "sku": "1085212",
        "manufacturer_part_number": "55A61SEVS(01)",
        "gtin": "6942351430447",
        "title": "Hisense 55\" A6S UHD Smart-TV (2026)",
        "brand": "Hisense",
        "currency": "SEK",
        "price": 4490,
        "price_ex_vat": 3592,
        "previous_price": 7990,
        "discount_amount": 3500,
        "discount_pct": 43.8,
        "club_price": null,
        "in_stock_online": true,
        "online_stock_level": "100+",
        "next_incoming": "2026-11-03T23:00:00Z",
        "stores_with_stock_count": 42,
        "energy_class": "E",
        "campaign_text": "Kampanj! Gäller t.o.m. söndag 8 november med reservation för slutförsäljning",
        "seller": "Elgiganten",
        "marketplace": false,
        ...
      },
      ...
      {
        "sku": "906393",
        "gtin": "8806097112211",
        "title": "Samsung 55” Q8F 4K QLED Smart TV (2025)",
        "price": 5990,
        "price_ex_vat": 4792,
        "previous_price": 15990,
        "discount_pct": 62.5,
        "in_stock_online": false,
        "online_stock_level": "0",
        "stores_with_stock_count": 5,
        "rating": 4.3,
        "review_count": 45,
        "campaign_text": "Kampanj! Gäller t.o.m. söndag 1 november med reservation för slutförsäljning",
        ...
      },
      ...
    ],
    "country": "se",
    "total": 43,
    "page": 1,
    "page_size": 24,
    "last_page": 2,
    "has_more": true
  },
  "meta": { "record_count": 24, "total": 43, "charged_credits": 2, "cache_hit": false, "mode": "live" }
}

Skrapa elgiganten.se: priset, gränsen och butikerna som inte finns i listan

Elgiganten har tre priser på samma vara: ordinarie pris, tidigare pris vid nedsättning och Club-pris för medlemmar, och alla tre finns också utan moms. När motorn byggdes, i oktober 2026, var det på de tre Club-varorna i kontrollen Club-priset som stod som det stora priset på produktkortet. En skrapa som tar det största talet på kortet sparar alltså ett medlemspris som pris. Här ligger det ordinarie priset i `price` och medlemspriset i `club_price`, och värdena stämde mot sajtens eget produktkort för 12 av 12 artiklar.

En sökning slutar vid 1 500 träffar. Med 100 rader per sida är sida 15 den sista; på sida 16 svarar källan med noll träffar, vilket ser ut som att sortimentet tagit slut. API:et avvisar en sådan sida med INVALID_PARAM i stället för att lämna en tom lista.

Lagret per butik nämner fler butiks-id än butikslistan. Vid bygget var det 33 av 201 id som inte fanns i listan, och alla hade lager 0. I vår kontroll den 28 oktober gällde det 16 av 184 rader. De kommer med `listed_store: false` och utan namn, så att de inte räknas som riktiga butiker med tomt lager.

Ingen av fällorna märks som ett fel. Den som bevakar kampanjpriser märker det först när siffrorna inte går ihop: ett medlemspris som sparats som ordinarie pris, en sökning som verkar ta slut vid sida 16 eller butiks-id som saknas i butikslistan.

Gränser och ärliga noteringar

  • Tjänsten är fristående från Elgiganten: inget officiellt gränssnitt, inget avtal och inget partnerskap.
  • Fritextsökningen är inte exakt. ”tv 55 tum” gav även 43-, 50-, 65-, 75- och 85-tumsapparater. Läs storleken ur titeln eller specifikationerna, eller avgränsa med kategori och märke.
  • Recensioner och egen sortering ingår inte. Betyget och antalet recensioner finns per artikel, själva omdömena inte.
  • `previous_price` finns bara när varan är nedsatt och är sajtens lägsta pris under de 30 dagarna före nedsättningen. Hur länge en kampanj gäller står bara som text i `campaign_text`.
  • `online_stock_level` är sajtens egen nivåtext (till exempel "100+" eller "0"), inget exakt antal. Lagret per butik finns bara i `product`; sökningen anger hur många butiker som har varan.
  • Butikslistan har 168 butiker, och 83 av dem är Phonehouse-butiker, till exempel Phonehouse Alingsås bredvid Elgiganten Alingsås. Ska bara Elgigantens egna varuhus med, sorterar man bort namnen som börjar på Phonehouse.
  • Club-pris kommer bara när Elgiganten publicerar ett; vid bygget fanns det på 29 av 168 sökrader. Delbetalningsplaner fanns på 0 av 14 artiklar i samma kontroll.
  • Varje sökning ger högst 1 500 träffar. För större urval körs en sökning per kategori eller märke, eller så stegar man igenom prisintervall.
  • Ett anrop till `search` eller `product` drar 2 krediter, ett till `stores` 1.