Syndication Exports v3
The API enables partners to build their own navigation and representation of solute's price comparison data. It is accessed via an HTTPS connection using Basic Authentication (RFC 2617).
Export Description
The export feed structure is made up of base and delta exports. The delta exports are generated every 20 minutes and include only changes to the previous data state. The base exports are generated in much larger intervals and include all data and represent the new reference point for the following changes.
The export files are available for download via HTTPS with this API (see section Exports).
How to Use
We export several different types of data, specified as the data_source
parameter. Most commonly used are:
- shopsv3
: list of shops that are "online", i.e. (!) you may only use offers from shops marked as is_online
! (!) (base-only)
- offersv3
: the actual offers (base and deltas)
- clicklog_export
: all clicks you generated on a day (base-only, once per day).
- see the documentation for /exports/next
for a complete list.
You will almost certainly need shopsv3
, and most partners also consume offersv3
.
Files are configured individually per partner, either as semicolon-separated CSV or Linewise JSON.
Downloading and Using Exports
- Use the
/exports/next
endpoint with the appropriatedata_source
to check if there is a new export available. Pass along thetoken
, if you already have one. If not, no worry, you will get one in the response. Take a few minutes and try this in our Swagger interface, linked above. - If no new export is available, an HTTP status code 204 is returned. Wait for a couple of minutes and retry.
- If a new export is indeed available, the HTTP status code is 200 and the
response contains a list of export file IDs in
export.export_files
. All of these must be downloaded (via/export-files/<file_id>
) and processed (see below). - The response also contains a new
token
. You need to store this token and provide it astoken=<token>
for the next call to/exports/next
. Otherwise you will get the latest base. Again. Note: Each data source has its own token. - Do this for all data sources you're interested in. You will at least need
data_source=shopsv3
so you know which shop offers you can use. - Processing a base (response:
export.export_type=="base"
) means you need to replace all your shops/offers/products by what you just downloaded. A base contains all records of the given type/data_source
. Anything not in the base needs to be deleted. - Processing a delta (response:
export.export_type=="delta"
) means for each row, you need to check theoperation
field and act accordingly:"delete"
,"update"
, or"add"
the given row. Note that an"update"
can relate to a row you haven't seen yet, making it effectively into an"add"
.
For data sources that don't have any deltas (i.e., shops, categories, brands)
it may be more convenient to use the /export-files/latest-base
endpoint,
while making sure to send a If-None-Match
header with the latest ETag so you
don't download the same export twice.