GET · Export · Read · v2.1.0Export API
Export data from the store. Starting with v2.1.0, using RESTful URL paths: /categories/{id} returns the category itself.
GET /Export/JSON/categories # All
GET /Export/JSON/categories/128 # ID 128
GET /Export/JSON/categories?id=128
/categories/{id} = Single Resource
The category with this ID
GET /Export/JSON/categories/128
→ Category 128 ("xoPort REST API")
?parent_id={id} = Children
Children of the parent category
GET /Export/JSON/categories?parent_id=128
→ Subcategories of 128
Breaking Change v2.1.0: /categories/{id} previously returned the children. Now use ?parent_id={id} for children.
| Endpoint | Description | Example |
|---|
GET /categories | All Categories | Complete category tree |
GET /categories/{id} | Single category | /categories/128 → ID 128 |
GET /categories?id={id} | Alternative to URL path | ?id=128 |
GET /categories?parent_id={id} | Direct children | ?parent_id=128 |
GET /categories?parent_id={id}&recursive=1 | Complete subtree | All descendants |
GET /categories?status=1 | Active only | Filtering |
GET /categories?language=de | German only | Language filter |
GET /categories/productlist | Lightweight: Category→Product Mapping NEW v2.12.0 | Per Category: IDs + Models |
GET /categories/productlist?categories_id={id} | Products in a Category | ?categories_id=73 |
| Media NEW v2.16.0 | GET /Export/JSON/medias | media:read |
| Entity | All | Single | Scope |
|---|
| Products SQL Pagination v2.12.0 | GET /products | GET /product/{id} | products:read |
| Customers | GET /customers | GET /customer/{id} | customers:read |
| Manufacturers | GET /manufacturers | GET /manufacturer/{id} | manufacturers:read |
| Orders | GET /orders | GET /order/{id} | orders:read |
Documentation NEW v2.61.0 PDF as content_base64 – can be used directly as a ticket attachment | – | GET /order_document/{id}?type=rg | orders:read |
| News | GET /newsdesks | GET /newsdesk/{id} | news:read |
| News Categories | GET /newsdeskcats | GET /newsdeskcat/{id} | newscategories:read |
| FAQ | GET /faqs | GET /faq/{id} | faq:read |
| FAQ Categories | GET /faqcats | GET /faqcat/{id} | faqcategories:read |
| SEO History | GET /seohistorys | GET /seohistory/{id} | seohistory:read |
| Contracts | GET /contracts | GET /contracts/{id} | contracts:read |
| Newsletter Subscribers | GET /newsletter_subscribers | GET /newsletter_subscriber/{id} | newsletter:read |
| Newsletter Campaigns | GET /newsletters | GET /newsletter/{id} | newsletters:read |
Tickets CRUD v2.11.0 With claim and edit_lock (v2.118.0) | GET /tickets | GET /ticket/{id} | tickets:read |
Ticket Attachments Write: attachments[] toPOST/PUT /Import/JSON/tickets (v2.60.0) | GET /ticket_attachments/{id} | GET /ticket_attachment/{id}?file=name | tickets:read |
| Slider NEW v2.22.0 | GET /sliders | GET /slider/{id} | slider:read |
| Projects (xoCRM) NEW v2.35.0 | GET /projects | GET /project/{id} | projects:read |
| Project Tasks NEW v2.35.0 | GET /project_tasks | GET /project_task/{id} | project_tasks:read |
| Appointments (xoCRM) NEW v2.44.0 | GET /appointments | GET /appointment/{id} | appointments:read |
| Attributes & Option Values NEW v2.96.0 | GET /products_options
GET /products_options_values | GET /products_option/{id} | products:read |
| Shipping Time Profiles NEW v2.94.0 | GET /shipping_profiles | GET /shipping_profile/{id} | products:read |
| Tax Classes NEW v2.90.0 | GET /tax_classes | GET /tax_class/{id} | products:read |
| Category Page Filters NEW v2.100.0 | GET /products_filters | GET /products_filter/{fid} | products:read |
| Gift Cards & Coupons NEW v2.102.0 | GET /coupons | GET /coupon/{id} | orders:read |
| Ticket Departments NEW v2.103.0 | GET /ticket_departments | GET /ticket_department/{id} | tickets:read |
| Settings NEW v2.108.0 | GET /configuration | – | configuration:read |
| CSV/XLS Porter NEW v2.109.0 | GET /porters | GET /porter/{id} | porters:read |
| Reviews NEW v2.122.6 | GET /reviews | GET /review/{id} | products:read |
The individual reviews on the product page, including star rating, title, text, and the store’s response for each language. Without a filter, the list shows only approved reviews—the same ones displayed on the product page. The individual query /review/{id} returns a review even before it has been approved.
| Parameters | Effect | Example |
|---|
products_id | Reviews for one or more items | ?products_id=104648,104650 |
status | 1 approved (default), 0 pending approval, all both | ?status=all |
since | Created or last modified on or after | ?since=2026-10-05 |
Example – daily comparison, including withdrawn approvals:
GET /reviews?status=all&since=2026-10-05&limit=250&page=1
No customer data. "author " is the name displayed on the product page. The endpoint does not return the customer ID, email, or order number—only "verified_purchase " (a review associated with an order). Therefore, the "products:read" scope is sufficient. Deleted reviews no longer appear in the list. Anyone mirroring an inventory should therefore periodically synchronize all IDs.
{
"success": true,
"api_version": "2.1.0",
"type": "categories",
"count": 1,
"data": [
{
"categories_id": 128,
"parent_id": 97,
"status": 1,
"languages": {
"de": {
"categories_name": "xoPort REST API",
"categories_description": "..."
}
}
}
],
"timestamp": "2026-01-27 14:00:00"
}
Start Export
Create an OAuth2 client with :read scopes.
Create an OAuth2 client
All export endpoints support pagination via query parameters:
| Parameter | Default | Max | Description |
|---|
limit | 50 | 250 | Maximum number of records per request |
offset | 0 | — | Starting position in the results |
Example: GET /products?limit=50&offset=100
The response contains the following in the stats object:
count — Number of returned recordslimit — Applied limitoffset — Applied offsethas_more — true if more records are available
Defaults can be configured via XOPORT_API_MAX_LIMIT and XOPORT_API_DEFAULT_LIMIT.
The product export can be limited on the server side instead of retrieving the entire catalog page by page. A comma separates an inclusion list (maximum of 100 values); multiple filters are combined with an "AND" operator.
| Parameters | Effect | Example |
|---|
status | Item status | ?status=1 |
tax_class_id | Tax Class | ?tax_class_id=0,1 |
categories_id | Item is in one of the categories | ?categories_id=10039,10104 |
ean_prefix | EAN starts with … | ?ean_prefix=978,979,977 |
model_prefix | Item number starts with … | ?model_prefix=166- |
last_modified | Last modified on … | ?last_modified=2026-08-19 |
Example – all purchasable items with a book EAN that are not subject to the reduced tax rate:
GET /products?ean_prefix=978,979,977&tax_class_id=0,1&status=1&limit=250
stats.total refers to the number of results returned by the filter, not the total catalog size.
There is intentionally no “not equal to” operator. “Everything except tax class 2” is written as an inclusive list of the remaining classes (?tax_class_id=0,1). An invalid filter value is rejected with an HTTP 400 response and is not silently discarded—otherwise, the unfiltered catalog would be returned. Filters applied to a single resource (/products/{id}) or to an ID range are rejected for the same reason.