Glowjakt Themes API
The Themes API from Glowjakt — 2 operation(s) for themes.
The Themes API from Glowjakt — 2 operation(s) for themes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/glowjakt-se:glowjakt-se-themes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Glowjakt Public Themes API
version: 1.0.0
summary: Nordic beauty price comparison — read-only public API
description: Glowjakt compares beauty product prices across 40+ stores in Sweden, Norway, Denmark, Finland and Germany (the German market is branded Glowscout). Products are matched by EAN barcode, so comparisons are exact. Prices refresh daily from store feeds. Each market has its own API host (see servers) with its own catalog and currency. Glowjakt never charges stores for listing and sells no sponsored placements. This specification covers the curated read-only surface intended for AI agents and integrations. Please respect rate limits; contact us for high-volume use. An MCP server is also available at https://mcp.glowjakt.se/mcp — see https://mcp.glowjakt.se/docs.
contact:
name: Glowjakt (Sejder AB)
email: kontakt@glowjakt.se
url: https://glowjakt.se/se/om-oss/
servers:
- url: https://api.glowjakt.se
description: Sweden (SEK) — glowjakt.se
- url: https://api.glowjakt.no
description: Norway (NOK) — glowjakt.no
- url: https://api.glowjagt.dk
description: Denmark (DKK) — glowjagt.dk
- url: https://api.glowjakt.fi
description: Finland (EUR) — glowjakt.fi
- url: https://api.glowscout.de
description: Germany (EUR) — glowscout.de (Glowscout)
security: []
tags:
- name: Themes
paths:
/api/themes:
get:
operationId: listThemes
summary: Published gift and event pages for this market
description: Curated product lists for gift recipients and shopping events (for example gifts for dad, Advent calendars, Black Friday price drops), plus upcoming event dates. Only published pages are listed; fetch a page's products with GET /api/themes/{slug}.
responses:
'200':
description: Pages and upcoming events
content:
application/json:
schema:
type: object
properties:
pages:
type: array
items:
type: object
properties:
key:
type: string
description: Concept key, the same across markets (e.g. pappa, black-friday).
slug:
type: string
kind:
type: string
enum:
- blend
- price_drop
- hub
title:
type:
- string
- 'null'
in_season:
type: boolean
next_event_date:
type:
- string
- 'null'
format: date
events:
type: array
items:
type: object
properties:
key:
type: string
page_key:
type: string
label:
type: string
event_date:
type:
- string
- 'null'
format: date
season_from:
type: string
format: date
season_to:
type: string
format: date
tags:
- Themes
/api/themes/{slug}:
get:
operationId: getTheme
summary: One gift or event page with its products
description: 'kind=blend: in-stock products interleaved in rounds from the page''s product groups; within a group ranked by number of stores, then price. kind=price_drop: in-stock products whose lowest price today is at least the page''s minimum drop below the lowest price of the last four completed weeks, ranked by drop; reference_price and drop_percent are set, and only offers with recorded prices in that window count. kind=hub: no products. 20 products per page. Ranked by price data only; not influenced by payments from stores.'
parameters:
- $ref: '#/components/parameters/Slug'
- name: page
in: query
schema:
type: integer
default: 1
minimum: 1
maximum: 100
- name: sort
in: query
schema:
type: string
enum:
- blend
- price_asc
- price_desc
default: blend
responses:
'200':
description: Page with products (an empty product list is a valid page)
content:
application/json:
schema:
$ref: '#/components/schemas/ThemePage'
'404':
description: Unknown or unpublished page
tags:
- Themes
components:
parameters:
Slug:
name: slug
in: path
required: true
description: URL slug as returned by search/list endpoints.
schema:
type: string
schemas:
ThemeProduct:
type: object
properties:
id:
type: integer
name:
type: string
brand:
type:
- string
- 'null'
slug:
type:
- string
- 'null'
description: Product slug for GET /api/products/{slug}.
price:
type: number
description: Lowest in-stock price in the market currency.
currency:
type:
- string
- 'null'
store_name:
type:
- string
- 'null'
affiliate_url:
type:
- string
- 'null'
description: Link to the store (via a /go/ redirect).
offer_count:
type:
- integer
- 'null'
content_value:
type:
- number
- 'null'
description: 'Germany only: package content for the unit price (Grundpreis); null elsewhere.'
content_unit:
type:
- string
- 'null'
description: 'Germany only: unit of content_value (e.g. ml, g).'
group_index:
type: integer
round:
type: integer
reference_price:
type:
- number
- 'null'
description: 'price_drop pages: lowest price of the last four completed weeks.'
drop_percent:
type:
- number
- 'null'
description: 'price_drop pages: drop from reference_price, in percent, rounded down to one decimal.'
ThemePage:
type: object
properties:
key:
type: string
slug:
type: string
kind:
type: string
enum:
- blend
- price_drop
- hub
title:
type:
- string
- 'null'
h1:
type:
- string
- 'null'
description:
type:
- string
- 'null'
in_season:
type: boolean
description: True while one of the page's events is in season; title, h1 and description then carry the seasonal variant.
page:
type: integer
size:
type: integer
total:
type: integer
products:
type: array
items:
$ref: '#/components/schemas/ThemeProduct'