Get categories

Search or filter categories in a store catalog. The response provides basic details of found categories.

The order of categories in response sometimes does not represent their order in the Ecwid Control Panel or storefront. To have categories in that order, check the orderBy field value for each category returned by Ecwid and use it as a sort index in your application.

Headers

NameTypeDescription
AuthorizationstringoAuth token with mandatory Bearer before it. Example: Bearer e***s0, where e***s0 should be replaced with your oAuth token.

Q: How can I specify what fields I want to receive in response?

Add responseFields query param, specifying field names you want to receive.
Example: ?responseFields=count,items(id,name,url)

All query params

Query fieldTypeDescription
keywordstringSearch term for filtering category (supports name and name translations)
parentCategoryIdnumberID of the parent category. Set to 0 to get the list of root categories. Leave empty to get all store categories.
categoryIdsnumberList of category IDs separated by comma to search from. e.g. 100023,100024,100025
hidden_categoriesbooleanBy default, Ecwid returns only enabled categories. Set this parameter to true if you want hidden (disabled) categories to be returned. Default value: false
returnProductIdsbooleanSet to true if you want the results to contain a list of product IDs assigned to category. Default value: false
baseUrlstringStorefront URL for Ecwid to use when returning category URLs in the url field. If not specified, Ecwid will use the storefront URL specified in the Store profile
cleanUrlsbooleanIf true, Ecwid will return the SEO-friendly clean URL (without hash '#') in the url field. If false, Ecwid will return URL in the old format (with hash '#'). We recommend using true value if merchant's website supports clean SEO-friendly URLs
slugsWithoutIdsbooleanSet trueto receive custom page slug
offsetnumberOffset from the beginning of the returned items list (for paging)
limitnumberMaximum number of returned items. Maximum allowed value: 100. Default value: 100
langstringSet language for the category fields in search results. If a certain field does not have the translation available for the set language, default store language will be used for that field.
responseFieldsstringSpecify what fields you want to see in response. If not specified, APi will return all related fields. E.g. ?responseFields=count,items(id,name,url)

Response

A JSON object of type 'CategorySearchResult' with the following fields:

SearchResult

FieldTypeDescription
totalnumberThe total number of found items (might be more than the number of returned items)
countnumberThe total number of the items returned in this batch
offsetnumberOffset from the beginning of the returned items list (for paging)
limitnumberMaximum number of returned items. Maximum allowed value: 100. Default value: 100
itemsArrayThe categories list

Category

FieldTypeDescription
idnumberInternal unique category ID
parentIdnumberID of the parent category, if any
orderBynumberSort order of the category in the parent category subcategories list
hdThumbnailUrlstringCategory HD thumbnail URL resized to fit 800x800px
thumbnailUrlstringCategory thumbnail URL. The thumbnail size is specified in the store settings. Resized to fit 400x400px by default
imageUrlstringCategory image URL. A resized original image to fit 1500x1500px
originalImageUrlstringLink to the original (not resized) category image
originalImage<ImageDetails>Details of the category image
namestringCategory name
thumbnail<ImageDetails>Thumbnail image data. The thumbnail size is specified in the store settings. Resized to fit 400x400px by default
nameTranslated<Translations>Available translations for category name
originstringRead-only field returns if a category originated outside of Ecwid, e.g. "origin": "LIGHTSPEED"
urlstringURL of the category page in the store
productCountnumberNumber of products in the category and its subcategories. Important: if new products are assigned or unassigned for this category, the changes to productCount value will apply after several minutes.
enabledProductCountnumberNumber of enabled products in the category (excluding its subcategories). Requires the productIds=true query param.
descriptionstringThe category description in HTML
descriptionTranslated<Translations>Available translations for category description
enabledbooleantrue if the category is enabled, false otherwise. Use hidden_categories in request to get disabled categories
productIdsArray<number>IDs of products assigned to the category as they appear in Ecwid Control Panel > Catalog > Categories. To make this field appear in a response, send productIds=true in a request.
seoTitlestringPage title to be displayed in search results on the web. Recommended length is under 55 characters. Is empty if value wasn't changed by merchant from the product itself
seoTitleTranslatedstringTranslations of the page title to be displayed in search results on the web
seoDescriptionstringPage description to be displayed in search results on the web. Recommended length is under 160 characters. Is empty if value wasn't changed by merchant from the product itself
seoDecriptionTranslatedstringTranslations of the page description to be displayed in search results on the web

ImageDetails

FieldTypeDescription
urlstringImage URL
widthintegerImage width
heightintegerImage height

Translations

FieldTypeDescription
<ISO_LANG_CODE>stringTranslations for each available language. If no other translations are provided, the default language translations is returned. See available languages in store language settings

Errors

In case of error, Ecwid responds with an error HTTP status code and, optionally, JSON-formatted body containing error description

HTTP codes

HTTP StatusMeaningCode (optional)
400Request parameters are malformed
400The cleanUrls value is invalid. It must be either true or falseCLEAN_URLS_PARAMETER_IS_INVALID
415Unsupported content-type: expected application/json or text/json
500Cannot retrieve the categories info because of an error on the server

Error response body (optional)

FieldTypeDescription
errorMessagestringError message

Q: How to get URLs for categories?

Direct URL for each category is always available in the url field once you make a request to the Ecwid REST API.

In any Ecwid store there is a Store profile field, where store owners can specify their storefront location. In case if it's empty, Ecwid will use their Instant site URL to provide category URLs in the REST API and other connected services.

When a store is embedded into multiple websites

For this situation you may need to generate a category feed for each of those websites (building a sitemap, etc.), hence there will be multiple storefront URLs to process. In this case you can use baseUrl request parameter to get a working category URL in a response from the Ecwid REST API.

Let's see how it works:

If baseUrl request parameter is specified, then the url field will be generated according to that URL as a storefront URL.

Examples

Ecwid store has a storefront URL set in store settings as: "https://mdemo.ecwid.com":

  • baseUrl parameter is not set in a request:

Example category URL in the url field will be: "https://mdemo.ecwid.com#!/apple/p/70445445"

  • baseUrl parameter is set as "https://mycoolstore.com":

Example category URL in the url field will be: "https://mycoolstore.com#!/apple/p/70445445"

As you can see, the category URL in a response from Ecwid API changes based on the value of the baseUrl request parameter. So now you can use it to get category URLs of the same store for any number of storefront URLs.

It is possible to use the baseUrl parameter together with the cleanUrls parameter. See below for more details on the cleanUrls parameter.

Receiving SEO-friendly (clean) URLs from the Ecwid REST API

By default, Ecwid's category URLs use hash-based format: "https://mdemo.ecwid.com#!/apple/p/70445445". In case a website supports the SEO-friendly URLs, you will need to use the cleanUrls request parameter in order to get URLs in that format.

Let's see how it works:

If cleanUrls request parameter is set to true, then url field will have the SEO-friendly format in the response (clean URL, no hash "#").

Examples

Ecwid store has a storefront URL set in store settings as: "https://mdemo.ecwid.com"

  • cleanUrls parameter is set to false or not set

Example category URL in the url field will be: "https://mdemo.ecwid.com#!/apple/p/70445445"

  • cleanUrls parameter is set to true

Example category URL in the url field will be: "https://mdemo.ecwid.com/apple-p70445445"

As you can see, the format of a category URL returned from the Ecwid API changes based on the cleanUrls request parameter. So now you can use it to get URLs of any of the two supported URL formats - SEO-friendly (clean) URLs or hash-based URLs.

It is possible to use the cleanUrls parameter together with the baseUrl parameter. See above for more details on the baseUrl parameter.

Language
Authorization
Query