🚨 Migration Guide Available - View Migration Guide

Published API (1.0.0)

Download OpenAPI specification:

The Published API provides access to user-generated content (UGC), including product and brand reviews and ratings, for Skeepers organizations. It is designed to facilitate seamless integration with e-commerce platforms, analytics tools, and other applications by offering:

  • Detailed Reviews: Access in-depth product and brand reviews with filtering, sorting, and pagination.
  • Aggregated Ratings: Retrieve product ratings with breakdowns by rating levels.
  • Secure Access: OAuth2.0 Authentication ensures data security and account-specific access.
  • Scalable Design: Built for performance and scalability to handle high volumes of data.

This API empowers businesses to leverage user reviews and enhance customer experiences through insights and integrations.

API URL

The base URL for accessing the Published API is:

https://api.skeepers.io/verified-reviews/v1/published

Authentication

Authentication is required to use the Published API. Follow the step-by-step guide below to retrieve your API credentials, obtain an access token, and use it to authenticate your requests.

1. Retrieve your API Credentials

To begin, log in to your Ratings & Reviews account: https://app.netreviews.eu/

  1. Navigate to the Account management > API Access menu.
  2. If not done already, click the Create your API account button to generate your credentials.
  3. Locate your API credentials (Client ID and Client secret) and keep them handy for the next step.

2. Obtain an Access Token

To obtain an access token, make a POST request to the authentication endpoint as follows:

Authentication endpoint

https://auth.skeepers.io/realms/skeepers/protocol/openid-connect/token

Header Parameters

Authorization: Basic <base64 encoded "clientId:clientSecret">
Content-Type: application/x-www-form-urlencoded

Replace <base64 encoded "clientId:clientSecret"> with the Base64-encoded value of your API credentials (Client ID and Client secret).

Request Parameters

grant_type: client_credentials
audience: verified-reviews

Example

curl -X POST "https://auth.skeepers.io/realms/skeepers/protocol/openid-connect/token" \
  -H "Authorization: Basic <base64(client_id:client_secret)>" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "audience=verified-reviews"

3. Authenticate your Requests

Once you've obtained the access token, include it in the Authorization header of all your requests to the Published API as follows:

Authorization: Bearer <access_token>

Replace <access_token> with the actual access token you received from the previous step.

Great job! You are now ready to make authenticated requests to the Published API.

Let's explore the methods below!

Rate Limiting

To ensure fair usage and optimal performance for all users, the Published API implements rate limiting on all endpoints.

Rate Limits:

  • 5 requests per second (maximum burst rate)
  • 100 requests per minute (sustained rate)

Exceeding Rate Limits:

If you exceed the rate limit, you will receive a 429 Too Many Requests response. We recommend implementing exponential backoff in your application to handle these responses gracefully.

Response Headers:

The API returns the following headers to help you track and manage rate limits:

Header Description
RateLimit-Limit Allowed limit in the timeframe.
RateLimit-Remaining Number of available requests remaining.
RateLimit-Reset The time remaining, in seconds, until the rate limit quota is reset.
X-RateLimit-Limit-Second The time limit, in number of seconds.
X-RateLimit-Limit-Minute The time limit, in number of minutes.
X-RateLimit-Remaining-Second The number of seconds still left in the time frame.
X-RateLimit-Remaining-Minute The number of minutes still left in the time frame.
Retry-After This header appears on 429 errors, indicating how long the upstream service is expected to be unavailable to the client.

Need Higher Limits?

If your use case requires higher rate limits, custom limits can be configured on a per-client basis. Please contact our support team to discuss your requirements and we'll work with you to establish appropriate limits for your needs.

Recommended usage

Given our OAuth2.0 authentication system and rate limiting implementation, we recommend a specific integration pattern to optimize performance and ensure reliable data access.

Recommended Integration Pattern:

For most use cases, we recommend pulling review data into your own system rather than making direct API calls from your backend. This approach provides better performance, reliability, and user experience.

1. Initial Full Synchronization

Start by performing a complete data pull to populate your local system:

# First request - get initial batch
GET /products/reviews?limit=200&sort=publish_date

# Use cursor in Link header to know if there are more pages and continue until all data is retrieved
GET /products/reviews?cursor=eyJpZCI6MTIzfQ&limit=200&sort=publish_date
GET /products/reviews?cursor=eyJpZCI6NDU2fQ&limit=200&sort=publish_date
# ... continue until no more pages

2. Periodic Updates

After the initial sync, implement periodic updates to capture new reviews. The frequency can be determined based on your business needs while respecting our rate limits:

# Get newest reviews first, sorted by publish date descending
GET /products/reviews?limit=200&sort=publish_date&desc=publish_date

# Continue pagination until you reach reviews you already have in your system
GET /products/reviews?cursor=eyJpZCI6MTIzfQ&limit=200&sort=publish_date&desc=publish_date
# ... stop iterating once you encounter a review already in your local system

Benefits of This Approach:

  • Performance: Faster response times for your users
  • Reliability: Reduced dependency on real-time API availability
  • Flexibility: Full control over data presentation and caching
  • Rate Limit Compliance: Efficient use of API calls within our limits

Future Frontend Access:

For clients requiring direct frontend API access, we plan to introduce a dedicated public endpoint with specific rate limiting designed for client-side usage. This endpoint will complement the current server-to-server API.

Reporting reviews capacity

The API does not allow reporting reviews directly. You need to implement the reporting functionality in your own system and then report the reviews directly in our backoffice or contact our support team for assistance.

Pagination

Most endpoints in the Published API use cursor-based pagination for efficient navigation through large result sets.

How it works:

  • Results are returned page by page using opaque cursor tokens
  • Navigate forward and backward using cursors from the Link response header
  • Cursors maintain your query context (filters, sorting) automatically

Getting started:

  1. First request: Call any paginated endpoint without a cursor parameter
  2. Next pages: Extract the cursor from the Link header (rel="next") and use it in your next request
  3. Previous pages: Use the cursor from rel="prev" to navigate backward

Important rules:

  • Cursors must be used with the same query parameters (filters, sorting) as the original request
  • Changing filters or sorting requires starting a new pagination sequence
  • Not all endpoints use pagination - check individual endpoint documentation

Example workflow:

# First request
GET /products/reviews?limit=10&sort=review_date

# Response includes Link header:
Link: <...?cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9&limit=10&sort=review_date>; rel="next"

# Next request
GET /products/reviews?cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9&limit=10&sort=review_date

For detailed parameter information, see the cursor and limit query parameters in each endpoint.

Product Reviews

Access product reviews and their aggregated ratings.

Get product ratings and review summaries

Retrieve comprehensive product information including aggregated ratings, AI-generated review summaries, and quality criteria data.

Use this endpoint to:

  • Display star ratings and rating breakdowns on product pages
  • Show AI-generated review summaries to customers
  • Access quality criteria scores (if enabled in your account)

Pagination: This endpoint supports cursor-based pagination. See the Pagination section for details.

Note: Products are identified by product_variation_id. For GTIN-based lookups, use the /products/ratings endpoint instead.

Authorizations:
OAuth2
query Parameters
cursor
string
Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

Cursor for navigating through paginated results page by page, both forward and backward.

Navigation Flow:

  • First page: Omit cursor parameter to start from the beginning
  • Next page: Use cursor from Link header rel="next" to move forward
  • Previous page: Use cursor from Link header rel="prev" to move backward
  • Navigate seamlessly in both directions when cursors are available

Important Rules:

  • Must be used with the same query parameters (filters, sorting) as the request that generated the cursor
  • Changing any filter, sort, or search parameter will result in a 400 error
  • Each cursor is tied to a specific query and position in the result set

Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

limit
integer [ 1 .. 200 ]
Default: 10
Example: limit=10

Number of items to return per page.

Constraints:

  • Minimum: 1
  • Maximum: 200
  • Default: 10

Note: The limit must remain consistent when using cursors for navigation.

sort
string
Example: sort=review_date,review_rate

Field(s) to sort results by, separated by commas for multiple fields.

Sorting Rules:

  • Only specific fields are allowed for sorting (varies by endpoint)
  • Default sorting is ascending unless field is listed in the desc parameter
  • Multiple fields can be specified: sort=review_date,review_rate

Validation:

  • Using invalid field names results in a 400 error with available field list
  • Fields must be valid for the specific endpoint being called

Common sortable fields:

  • review_date, publish_date, review_rate, product_variation_id
  • See individual endpoint documentation for complete field lists
desc
string
Example: desc=review_date,review_rate

Specify which fields should be sorted in descending order. By default, all sorting is ascending.

Usage Rules:

  • Fields listed here must also be present in the sort parameter
  • Multiple fields can be specified: desc=review_date,review_rate
  • Only affects fields that are already being sorted

Validation:

  • All fields in desc must match fields in sort parameter
  • Using fields not in sort results in a 400 error

Examples:

  • sort=review_date&desc=review_date → Reviews sorted by date, newest first
  • sort=review_date,review_rate&desc=review_rate → Sort by date (asc), then rating (desc)
product_variation_id
string

Product's unique identifier. String separated by commas for multiple values.

Responses

Response samples

Content type
Example
[
  • {
    }
]

Get individual product reviews with detailed filtering

Retrieve individual product reviews with comprehensive filtering options for building review displays, analytics, and customer insights.

Use this endpoint to:

  • Build paginated review listings on product pages
  • Filter reviews by rating, date, verification status, or content
  • Export review data for analysis or backup
  • Create custom review displays with media and author information

Advanced filtering: Supports multiple product identifiers (GTIN, SKU, MPN) and various date ranges for precise data retrieval.

Pagination: This endpoint supports cursor-based pagination. See the Pagination section for details.

Authorizations:
OAuth2
query Parameters
cursor
string
Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

Cursor for navigating through paginated results page by page, both forward and backward.

Navigation Flow:

  • First page: Omit cursor parameter to start from the beginning
  • Next page: Use cursor from Link header rel="next" to move forward
  • Previous page: Use cursor from Link header rel="prev" to move backward
  • Navigate seamlessly in both directions when cursors are available

Important Rules:

  • Must be used with the same query parameters (filters, sorting) as the request that generated the cursor
  • Changing any filter, sort, or search parameter will result in a 400 error
  • Each cursor is tied to a specific query and position in the result set

Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

limit
integer [ 1 .. 200 ]
Default: 10
Example: limit=10

Number of items to return per page.

Constraints:

  • Minimum: 1
  • Maximum: 200
  • Default: 10

Note: The limit must remain consistent when using cursors for navigation.

sort
string
Example: sort=review_date,review_rate

Field(s) to sort results by, separated by commas for multiple fields.

Sorting Rules:

  • Only specific fields are allowed for sorting (varies by endpoint)
  • Default sorting is ascending unless field is listed in the desc parameter
  • Multiple fields can be specified: sort=review_date,review_rate

Validation:

  • Using invalid field names results in a 400 error with available field list
  • Fields must be valid for the specific endpoint being called

Common sortable fields:

  • review_date, publish_date, review_rate, product_variation_id
  • See individual endpoint documentation for complete field lists
desc
string
Example: desc=review_date,review_rate

Specify which fields should be sorted in descending order. By default, all sorting is ascending.

Usage Rules:

  • Fields listed here must also be present in the sort parameter
  • Multiple fields can be specified: desc=review_date,review_rate
  • Only affects fields that are already being sorted

Validation:

  • All fields in desc must match fields in sort parameter
  • Using fields not in sort results in a 400 error

Examples:

  • sort=review_date&desc=review_date → Reviews sorted by date, newest first
  • sort=review_date,review_rate&desc=review_rate → Sort by date (asc), then rating (desc)
product_variation_id
string

Product's unique identifier. String separated by commas for multiple values.

product_ean
string

GTIN/EAN code of the product(s). String separated by commas for multiple values.

product_mpn
string

Manufacturer Part Number, a unique product identifier from the manufacturer. Can be a single value or a list of value separated by comma.

product_jan
string

GTIN/JAN code of the product(s). String separated by commas for multiple values.

order_reference
string

Reference linked to the purchase order. String separated by commas for multiple values.

product_upc
string

GTIN/UPC code of the product(s). String separated by commas for multiple values.

product_sku
string

Stock Keeping Unit of the product(s). String separated by commas for multiple values.

review_rate
Array of integers
Items Enum: 1 2 3 4 5

Filter reviews by rating (1-5).

publish_date.$KEYWORD
string <date-time>
Example: publish_date.$KEYWORD=2024-01-01T00:00:00Z

Filter reviews by their publication date using date range operators.

Available operators:

  • publish_date.gte - Published on or after this date
  • publish_date.gt - Published after this date
  • publish_date.lte - Published on or before this date
  • publish_date.lt - Published before this date

Format: Use ISO 8601 format: YYYY-MM-DDTHH:mm:ssZ

Examples:

  • publish_date.gte=2024-01-01T00:00:00Z - Reviews published since January 1st, 2024
  • publish_date.lt=2024-06-01T00:00:00Z - Reviews published before June 1st, 2024
  • Combine operators: publish_date.gte=2024-01-01T00:00:00Z&publish_date.lt=2024-02-01T00:00:00Z
review_date.$KEYWORD
string <date-time>
Example: review_date.$KEYWORD=2024-01-01T00:00:00Z

Filter reviews by the date when customers originally wrote the review.

Available operators:

  • review_date.gte - Reviews written on or after this date
  • review_date.gt - Reviews written after this date
  • review_date.lte - Reviews written on or before this date
  • review_date.lt - Reviews written before this date

Common use cases:

  • Get recent reviews: review_date.gte=2024-01-01T00:00:00Z
  • Get reviews from a specific month: combine gte and lt operators
  • Exclude very old reviews: review_date.gte=2023-01-01T00:00:00Z
order_date.$KEYWORD
string <date-time>
Example: order_date.$KEYWORD=2024-01-01T00:00:00Z

Filter reviews by the original purchase order date.

Available operators:

  • order_date.gte - Orders placed on or after this date
  • order_date.gt - Orders placed after this date
  • order_date.lte - Orders placed on or before this date
  • order_date.lt - Orders placed before this date

Business use cases:

  • Analyze reviews from holiday sales: order_date.gte=2023-11-01T00:00:00Z&order_date.lt=2023-12-31T23:59:59Z
  • Track review patterns by purchase timing
  • Correlate seasonal buying with review sentiment
search
string

Search term to filter reviews. This search term will be applied on both the review content and the moderation text.

incentivization
string
Enum: "none" "gifted" "compensated" "spontaneous"

If the review was incentivized. Gifted meaning the product was gifted to the consumer in exchange for a review. Compensated meaning the product was bought by the consumer but the review was still compensated with monetary value.

syndicated_review
boolean

If the review was syndicated, meaning if was not deposited on this account but on the same product on another account.

Responses

Response samples

Content type
[
  • {
    }
]

Get aggregated product ratings by GTIN or product ID

Retrieve aggregated rating statistics for multiple products simultaneously. Ideal for catalog integrations and bulk rating lookups.

Use this endpoint to:

  • Display ratings on category pages or search results
  • Bulk update your product catalog with rating data
  • Get ratings by GTIN codes for product matching
  • Aggregate ratings across product variations

Key features:

  • No pagination - returns all requested products in a single response
  • Supports up to 200 products per request
  • Choose aggregation by GTIN or product_variation_id
  • Perfect for e-commerce catalog integrations
Authorizations:
OAuth2
query Parameters
type
required
string
Enum: "product_ean" "product_variation_id"

Type of aggregation for your ratings. Retrieve ratings by GTIN or aggregate rating at the parent level to regroup all the values per product variation id.

value
required
string

The identifier of the product you want to get ratings for. Either a list of product_variation_id or a list of GTINs. Maximum number of values is 200. String separated by commas for multiple values.

sort
string
Example: sort=review_date,review_rate

Field(s) to sort results by, separated by commas for multiple fields.

Sorting Rules:

  • Only specific fields are allowed for sorting (varies by endpoint)
  • Default sorting is ascending unless field is listed in the desc parameter
  • Multiple fields can be specified: sort=review_date,review_rate

Validation:

  • Using invalid field names results in a 400 error with available field list
  • Fields must be valid for the specific endpoint being called

Common sortable fields:

  • review_date, publish_date, review_rate, product_variation_id
  • See individual endpoint documentation for complete field lists
desc
string
Example: desc=review_date,review_rate

Specify which fields should be sorted in descending order. By default, all sorting is ascending.

Usage Rules:

  • Fields listed here must also be present in the sort parameter
  • Multiple fields can be specified: desc=review_date,review_rate
  • Only affects fields that are already being sorted

Validation:

  • All fields in desc must match fields in sort parameter
  • Using fields not in sort results in a 400 error

Examples:

  • sort=review_date&desc=review_date → Reviews sorted by date, newest first
  • sort=review_date,review_rate&desc=review_rate → Sort by date (asc), then rating (desc)

Responses

Response samples

Content type
[
  • {
    }
]

Brand Reviews

Access brand and shop reviews and their aggregated ratings.

Get brand and shop reviews

Retrieve reviews about your brand or individual shops with advanced filtering for reputation management and customer feedback analysis.

Use this endpoint to:

  • Display brand reviews on your website or app
  • Monitor shop-specific feedback across multiple locations
  • Filter reviews by verification status and personal data disclosure
  • Build custom review management interfaces

Pagination: This endpoint supports cursor-based pagination. See the Pagination section for details.

Authorizations:
OAuth2
query Parameters
cursor
string
Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

Cursor for navigating through paginated results page by page, both forward and backward.

Navigation Flow:

  • First page: Omit cursor parameter to start from the beginning
  • Next page: Use cursor from Link header rel="next" to move forward
  • Previous page: Use cursor from Link header rel="prev" to move backward
  • Navigate seamlessly in both directions when cursors are available

Important Rules:

  • Must be used with the same query parameters (filters, sorting) as the request that generated the cursor
  • Changing any filter, sort, or search parameter will result in a 400 error
  • Each cursor is tied to a specific query and position in the result set

Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

limit
integer [ 1 .. 200 ]
Default: 10
Example: limit=10

Number of items to return per page.

Constraints:

  • Minimum: 1
  • Maximum: 200
  • Default: 10

Note: The limit must remain consistent when using cursors for navigation.

sort
string
Example: sort=review_date,review_rate

Field(s) to sort results by, separated by commas for multiple fields.

Sorting Rules:

  • Only specific fields are allowed for sorting (varies by endpoint)
  • Default sorting is ascending unless field is listed in the desc parameter
  • Multiple fields can be specified: sort=review_date,review_rate

Validation:

  • Using invalid field names results in a 400 error with available field list
  • Fields must be valid for the specific endpoint being called

Common sortable fields:

  • review_date, publish_date, review_rate, product_variation_id
  • See individual endpoint documentation for complete field lists
desc
string
Example: desc=review_date,review_rate

Specify which fields should be sorted in descending order. By default, all sorting is ascending.

Usage Rules:

  • Fields listed here must also be present in the sort parameter
  • Multiple fields can be specified: desc=review_date,review_rate
  • Only affects fields that are already being sorted

Validation:

  • All fields in desc must match fields in sort parameter
  • Using fields not in sort results in a 400 error

Examples:

  • sort=review_date&desc=review_date → Reviews sorted by date, newest first
  • sort=review_date,review_rate&desc=review_rate → Sort by date (asc), then rating (desc)
search
string

Search term to filter reviews. This search term will be applied on both the review content and the moderation text.

is_verified
boolean

Review is verified or not.

is_personal_data_disclosed
boolean

Whether the author has agreed to share personal data or not.

shop_key
string

Search review by shop key of the brand. Can be a single value or a list of value separated by comma.

review_rate
Array of integers
Items Enum: 1 2 3 4 5

Filter reviews by rating (1-5).

linked_to_shop
boolean

The linked_to_shop filter allows you to retrieve the reviews that are linked to a shop for a brand. Using false will return only reviews that are not linked to shops.

Responses

Response samples

Content type
[
  • {
    }
]

Get brand and shop rating, review summaries and certificate link

Retrieve aggregated rating statistics and performance metrics for your brand and individual shop locations.

Use this endpoint to:

  • Display overall brand rating badges on your website
  • Monitor shop performance across different locations
  • Access historical rating trends (1-year and 5-year data)
  • Get first review dates and total review counts since account creation
  • Access certificate link for Verified Reviews badge display

Pagination: This endpoint supports cursor-based pagination. See the Pagination section for details.

Authorizations:
OAuth2
query Parameters
cursor
string
Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

Cursor for navigating through paginated results page by page, both forward and backward.

Navigation Flow:

  • First page: Omit cursor parameter to start from the beginning
  • Next page: Use cursor from Link header rel="next" to move forward
  • Previous page: Use cursor from Link header rel="prev" to move backward
  • Navigate seamlessly in both directions when cursors are available

Important Rules:

  • Must be used with the same query parameters (filters, sorting) as the request that generated the cursor
  • Changing any filter, sort, or search parameter will result in a 400 error
  • Each cursor is tied to a specific query and position in the result set

Example: cursor=eyJpZCI6MTIzLCJ0aW1lc3RhbXAiOiIyMDI0LTA2LTI0VDE1OjEyOjMxWiJ9

limit
integer [ 1 .. 200 ]
Default: 10
Example: limit=10

Number of items to return per page.

Constraints:

  • Minimum: 1
  • Maximum: 200
  • Default: 10

Note: The limit must remain consistent when using cursors for navigation.

sort
string
Example: sort=review_date,review_rate

Field(s) to sort results by, separated by commas for multiple fields.

Sorting Rules:

  • Only specific fields are allowed for sorting (varies by endpoint)
  • Default sorting is ascending unless field is listed in the desc parameter
  • Multiple fields can be specified: sort=review_date,review_rate

Validation:

  • Using invalid field names results in a 400 error with available field list
  • Fields must be valid for the specific endpoint being called

Common sortable fields:

  • review_date, publish_date, review_rate, product_variation_id
  • See individual endpoint documentation for complete field lists
desc
string
Example: desc=review_date,review_rate

Specify which fields should be sorted in descending order. By default, all sorting is ascending.

Usage Rules:

  • Fields listed here must also be present in the sort parameter
  • Multiple fields can be specified: desc=review_date,review_rate
  • Only affects fields that are already being sorted

Validation:

  • All fields in desc must match fields in sort parameter
  • Using fields not in sort results in a 400 error

Examples:

  • sort=review_date&desc=review_date → Reviews sorted by date, newest first
  • sort=review_date,review_rate&desc=review_rate → Sort by date (asc), then rating (desc)
shop_key
string

Search review by shop key of the brand. Can be a single value or a list of value separated by comma.

linked_to_shop
boolean

The linked_to_shop filter allows you to retrieve the reviews that are linked to a shop for a brand. Using false will return only reviews that are not linked to shops.

Responses

Response samples

Content type
[
  • {
    }
]