Search Offers

Enhanced Search (Beta)

An optional enhanced search mode is available for faster response times and more accurate queries. To use it, pass beta=true as a query parameter in your request. This is optional — the endpoint works fully without it.

What enhanced search adds:

  • Faster response times

  • NLP-based search queries

  • Enhanced filter criteria

Current limitations of enhanced search:

  • Returns partial offer data by default (passing extended=true will return full data but reduces performance)

  • The following search body attributes are not yet supported in enhanced mode:

    • sort_by

    • sort_direction

Coming soon to enhanced search:

  • Accurately mapped subscription_status (part of a new Violet feature — for now, you can ignore this value)

Filtering by Visibility

By default, this endpoint applies no visibility filter and returns all offers. Use the visible field in the request body to control this:

visible value

Result

omitted

All offers returned (no filter)

true

Only offers with visible=true

false

Only offers with visible=false (hidden offers)

When Offers Have visible=false

Offers are marked as hidden (visible=false) in the following cases:

  • Stores without a public storefront - When a Shopify store has no public online store URL configured (common for test stores, development environments, or private stores)

  • Unpublished products - Products that exist in Shopify but haven't been published to the online storefront (no publishedAt date)

Why this matters: During offer ingestion, Violet checks whether the merchant's store has a public online store URL. If it doesn't (which is typical for test stores), all offers are marked as visible=false by default, since there's no public storefront for customers to view them.

Visibility is determined during offer ingestion based on:

  • Whether the merchant has a public online store URL configured in Shopify

  • Whether the product is published in Shopify (publishedAt date)

Troubleshooting Empty Results

If you're not seeing any results from the search endpoint, check if the merchant's storefront is public and has products published. You can verify by omitting visible from the request body entirely — if results appear, their offers exist but have visible=false.

Search Offers

post

Maximum size limit of 100 results.

Query parameters
pageinteger · int32OptionalDefault: 1
sizeinteger · int32OptionalDefault: 20
exclude_publicbooleanOptionalDeprecatedDefault: true
exclude_hiddenbooleanOptionalDeprecated

Deprecated. Use the visible field in the request body instead.

extendedbooleanOptionalDefault: false
betabooleanOptionalDefault: false
Header parameters
X-Violet-TokenstringRequired
X-Violet-App-SecretstringRequired
X-Violet-App-Idinteger · int32Required
Body

Offer Search Request

querystringOptional

Used with the beta flag. A NLP-based search query

visiblebooleanOptional

Filter by visible offers

availablebooleanOptional

Filter by available offers

idinteger · int64Optional
merchant_idinteger · int32Optional
sellerstringOptional

Name of Merchant Selling Product

vendorstringOptional

Name of Original Vendor (Brand)

product_idstringOptional

The parent/container product ID

external_idstringOptional

External ID

namestringOptional

Name of Product in Offer

publishing_statusstring · enumOptional

Publishing status

Possible values:
subscription_statusstring · enumOptional

Subscription status

Possible values:
statusstring · enumOptional

Offer status

Possible values:
source_category_namestringOptional

Offer category from ecom-platform

tagsstring[]Optional

Tags to search for

merchant_idsinteger · int32[]Optional

Merchant Ids to filter by

min_priceinteger · int32Optional

Minimum Price

max_priceinteger · int32Optional

Maximum Price

sort_bystringOptional

Property to sort by in camelCase

sort_directionstringOptional

Direction to sort by

date_last_modified:minstring · date-timeOptional

Only include offers modified after this date.

Pattern: yyyy-MM-dd'T'HH:mm:ssZ
date_last_modified:maxstring · date-timeOptional

Only include offers modified before this date.

Pattern: yyyy-MM-dd'T'HH:mm:ssZ
Responses
post
/catalog/offers/search
default

default response

Last updated

Was this helpful?