Skip to main content

Export Store Products

GET 

/api/storefront/instances/:id/products/export

Export the store-product list as a spreadsheet FILE DOWNLOAD.

Not yet available to API tokens

This endpoint currently requires session authentication; Personal Access Token scope support is in progress.

This endpoint does not return JSON. The response body is the generated file, served as an attachment: Content-Type: text/csv for a CSV export (the type is sniffed from the generated file) or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for an XLSX one, with Content-Disposition: attachment; filename="<timestamp><random>_<user id>_StorefrontProduct.<format>". Do not try to parse it as JSON, and send Accept: */* rather than application/json.

Query parameters that shape the file:

  • format — csv (default) or xlsx. Decides both the file type and the filename extension.
  • included — a JSON-encoded ARRAY of column keys, e.g. ["id","storefront_product_id","unified_title","status","mapped_sku"]. It selects the columns AND their order; a key matches every exportable column it prefixes. Omit it (or send a list that matches nothing) to export every column. Available keys: external_id, sku, name, slug, price, compare_at_price, active, store_available, store_updated_at, created_at, product.id, product.name, product.sku, mapped_sku, mapped_at, storefront_product_id, unified_title, status, storefront_url.
  • Every filter[...], search_columns, search_strict_columns, filter_groups and sort parameter the product list accepts — the export is exactly the filtered, sorted list, with no paging. filter[ids]=16,17 exports just that selection; the archived-hidden-by-default rule applies here too.

Two columns always lead every file and are not selectable: Sr No. (a 1-based row counter) and id (the store-product id, so the file can be matched back to these rows).

Empty values are written as an empty cell, and object/array values are written as JSON text.

Filters (all sent as filter[<key>]):

  • filter[search] — free-text term. Pair it with the top-level search_columns (comma-separated) to restrict which columns are searched, and search_strict_columns to make a listed column match exactly instead of partially. Searchable columns: id (ALWAYS exact — a numeric term never partially matches an id), sku, storefront_product_id (the store's own product key) and unified_title (the store's product name).
  • filter[ids] — comma-separated list (or array) of store-product ids. Used to act on, or export, an explicit selection.
  • filter[mapping_status] — mapped or unmapped. all is a no-op.
  • filter[mapped] — boolean equivalent of the above (true / false).
  • filter[status] — active or inactive (computed from the store's active flag). all is a no-op.
  • filter[archived] — true, false or all. When the parameter is absent entirely, archived products are hidden; send all to see both.

Every column below also accepts operator filters, written filter[<column>.<operator>]:

  • Text columns sku, unified_title, storefront_product_id, status — operators contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty.
  • Numeric columns id, price, store_available — operators is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty.
  • Date/time columns store_updated_at, created_at, updated_at — operators is, is_not, before, after, on_or_before, on_or_after, between, is_empty, is_not_empty, today, yesterday, tomorrow, past_week, past_month, past_year, next_week, next_month, next_year, days_ago, days_from_now, past_days, next_days.
  • filter[mapped.is], filter[archived.is] and filter[archived.is_not] take a boolean.
  • Writing a column bare (filter[sku]=ABC) is the same as its is operator.

filter_groups combines conditions with AND/OR: base64 of a JSON tree such as {"conjunction":"and","children":[{"type":"condition","condition":{"column":"mapped","operator":"is","value":"false"}}]}. A tree that cannot be parsed is ignored by this list endpoint (but rejected by the bulk endpoints).

Sorting: sort accepts id, sku, price, store_available, store_updated_at, created_at, updated_at, position, storefront_product_id, unified_title and status. Prefix with - for descending. Default: -id.

Pagination: page (default 1) and per_page (default 10).

Authentication: Bearer token (session or PAT).

Request​

Responses​

OK

Response Headers
    Content-Type
    Content-Disposition