Prisjakt Search API
home
This API can help you in finding currently available shop offers, with good prices, for products in specific product categories, or across all categories.
It can also find categories, give details on products and their currently available offers.
Getting started
To use this API you need a RefID, which you can ask your contact at Prisjakt to set up, if you don't have one already. The RefID should always (excl. /token
) be sent as a query parameter ref=<your-ref-id>
. This will pre-populate all links with your ID, which will attribute click income to you.
Authentication
All requests to the API require authentication. To prove that the user has been granted permission, the request header sent by the application must include a valid access token. As the first step towards authentication, you will need to register your application. This will give you a unique client ID and client secret.
To authenticate add the body parameters grant_type
, client_id
, and client_secret
.
curl --request POST \
--header 'content-type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data client_id=<replace with client ID> \
--data client_secret=<replace with client secret> \
https://api.schibsted.com/prisjakt/partner-search/token
{
"access_token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6ImM1U09QVmQyS0h6VW9mVFg2L3d6ekJYWkVqaz0ifQ.eyJpc3MiOiJodHRwczovL2FwaS1zdGFnZS5zY2hpYnN0ZWQuY29tL3ByaXNqYWt0L2F1dGgiLCJzY29wZSI6InJvbGU6c2VydmljZSIsInN1YiI6IjhkYjFjMzA4MzUzYjQ0ZTY5MTE1ODFjZDZmMGRiM2JkIiwiaWF0IjoxNjIzMDQ1ODE2LCJleHAiOjE2MjMwNDY0MTZ9.RQWSrWE0uIeiKdW11Hho0yLJBM6LVJSXxIJCvy8-CNmJ4xoncAcaizqKIpN-mIL1AYQXFFDLrB_y0iZOoHBKnwjUVRt14OUhUjVuV57ntIFMAy5Xljiv5KGWkP5w0ZDuTcs72AEGd4q1BXwrEKyoT-q_F1GYkUB28E1f0LegOLH84p0VeaJ-CHbduHWXoC4J_j1yi7G1dDJu7U2rWNG7mT876b7n5S6QuV2pC3XJqzMoX2o10Kt3Zbpl9Pk1CDxDDjApntfnjeQjmwAcJAZ0MFxQWL8UHjFnzde0EI0RQWzGDFaMqC6lurEw6tuYDiJvPdSrjMcktSuF3p3g-Vs8eg",
"expires_in": 600,
"token_type": "Bearer"
}
The token and client ID should then be added as headers for the subsequent 600 seconds, after which a new token has to be requested.
--header 'client-id: <replace with client ID>' \
--header 'Authorization: Bearer <replace with access token>'
API Routes
Suggestions
Use the suggestions endpoint to filter products with a particularly good price right now.
The response will contain a list of products matching the query arguments with product information, and the offer with the current lowest price.
You can find detailed information about types received and returned in the menu under "/suggestions".
Caching, Sorting and Price Details
Caching
We expect you to cache results from this endpoint. The partner-search API caches results internally for 15 mins, a suggested cache time for a client would be at least 5 mins.
Sorting
The returned products are sorted in order of popularity, meaning that out of the returned products, the product which has driven the most amount of user interest lately, is the one that will end up in the top.
Price Details
A deal returned is not always a discounted price, and hence you can not expect an offer to always have a salesPrice
and originalPrice
.
price
- Will always be returned, this is the cheapest available offer on the product, will include the priceincludingShipping
if the vendor has supplied it to Prisjakt.memberprice
- Will be returned if the consumer has to be a member of a vendor club, sometimes incurring a subscription cost. N.B! ThelowestPrice
returned in addition to amemberPrice
can be higher, and might not be low enough to be considered a deal.salesPrice
&originalPrice
- Will be returned when the offer is a sale. This also means it will have anoriginalPrice
, meaning what the product normally costs from the vendor.priceTrend
- Percentage of how much cheaper the product is in relation to its price trend over the last 90 days.
"lowestPrice": {
"price": {
"value": 443,
"currency": "SEK",
"includingShipping": null
},
"memberPrice": null,
"salesPrice": null,
"originalPrice": null,
[...]
"priceTrend": {
"percentage": 11
}
}
Cookbook: Prisjakt Daily Deals
You can follow this short guide on how to craft requests which emulate the results given by Prisjakt's Daily Deals (SE). See this list for other markets: DK, NO, FI, FR, GB
You need these parameters:
filter[price_trend]
- Prisjakt websites usefilter[price_trend]=10
. Giving results with at least a 10% price drop according to a product's price trend (SE) - Norwegian version.filter[category]
- Optional, used if you want to filter on one to several categories (comma-separated). - You should use category slugs here, which you can find inslug
from /categories endpoint, or on Prisjakt's category pages ending with /c/category-name, e.g. prisjakt.nu/c/mobiltelefoner. Categories which have no slug are not compatible with/suggestions
.-ref
- Your RefId on Prisjakt, which attributes clicks to you, and pre-populates links with your ID.limit
- max 30, the amount of items evaluated for price trend. Further pages will be returned in thelinks
attribute
An example of a request fetching daily deals from the categories 'mobile phones' and 'tablets', for market 'SE' would look like this:
curl --location --request GET 'https://api.schibsted.com/prisjakt/partner-search/suggestions?filter[category]=mobiltelefoner,surfplattor&market=se&filter[price_trend]=10&ref=<your-ref-id>&limit=30' \
--header 'client-id: <replace with client ID>' \
--header 'Authorization: Bearer <replace with access_token>'
Products
You can find detailed information in the menu under /products.
curl --location --request GET 'https://api.schibsted.com/prisjakt/partner-search/products/4400600?market=se&ref=<your-ref-id>' \
--header 'client-id: <replace with client ID>' \
--header 'Authorization: Bearer <replace with access_token>'
Rate Limiting
To make the API fast for everybody, rate limiting is applied to the Client ID.
Production: 10,000 requests in 1 hour
The returned HTTP headers of any API request show your current rate limit status:
HEADER | DESCRIPTION |
---|---|
X-RateLimit-Limit | The maximum number of requests you're permitted to make per hour. |
X-RateLimit-Remaining | The number of requests remaining in the current rate limit window. |
X-RateLimit-Reset | The time in milliseconds when the current rate limit window resets. |
HTTP status code 429
is used to indicate that the current rate limit has been exceeded.
Status: 429 Too Many Requests
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 600000