Zikkio

Read catalogs. Write prices.

A unified eCommerce API for Shopify, WooCommerce, Magento 2, PrestaShop, BigCommerce, Wix and Google Merchant Center. Catalog reads on all seven, bulk price writes on six, and a result for every row you send.

PATCH /v1/connections/con_8f2a/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_3b71/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_9d04/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_51ce/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_7a2f/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_5f0b/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 200 OK  { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_c6e8/prices
Authorization: Bearer zk_live_••••

{
  "updates": [
    { "sku": "TEE-BLK-M", "price": 29.90 },
    { "sku": "TEE-BLK-L", "price": 29.90 }
  ]
}

→ 422 Unprocessable Entity
{ "error_code": "prices_not_writable",
  "message": "Google Merchant Center is read-only.",
  "errors": [] }
7 platforms in production
6 platforms with bulk price writes
25,000 stores connected
3.1M variant rows cached

Seven platforms in production

Catalog and variants read everywhere. Prices write on six. Google Merchant Center is read-only for now, and the table says so.

Google Merchant Center products come in without variants. Open a platform for how its stores connect.

Six calls, one integration

From the first connection to the first webhook. One bearer token, one connection ID, JSON in and out.

POST /v1/connect/sessions
Request
curl -X POST https://api.zikkio.com/v1/connect/sessions \
  -H "Authorization: Bearer zk_live_••••" \
  -d '{ "platform": "shopify", "end_user_ref": "acme-42" }'
Response 201 Created 118 ms
{
  "session_id": "ses_3kd9",
  "connect_url": "https://connect.zikkio.com/s/ses_3kd9",
  "expires_in": 900
}
GET /v1/connections/con_8f2a/products
Request
curl https://api.zikkio.com/v1/connections/con_8f2a/products?limit=2 \
  -H "Authorization: Bearer zk_live_••••"
Response 200 OK 64 ms · from the cache
{
  "data": [
    { "sku": "TEE-BLK-M", "name": "Black tee · M", "price": 29.90, "stock": 42 },
    { "sku": "TEE-BLK-L", "name": "Black tee · L", "price": 29.90, "stock": 17 }
  ],
  "next_cursor": "eyJvZmZzZXQiOjJ9"
}
GET /v1/connections/con_8f2a/products/prod_41f
Request
curl https://api.zikkio.com/v1/connections/con_8f2a/products/prod_41f \
  -H "Authorization: Bearer zk_live_••••"
Response 200 OK 212 ms · live from the store
{
  "id": "prod_41f",
  "name": "Black tee",
  "brand": "Acme",
  "category": "Apparel / Tees",
  "variants": [
    { "sku": "TEE-BLK-M", "price": 29.90, "cost": 11.20, "stock": 42 },
    { "sku": "TEE-BLK-L", "price": 29.90, "cost": 11.20, "stock": 17 }
  ]
}
PATCH /v1/connections/con_8f2a/prices
Request
curl -X PATCH https://api.zikkio.com/v1/connections/con_8f2a/prices \
  -H "Authorization: Bearer zk_live_••••" \
  -d '{ "updates": [
    { "sku": "TEE-BLK-M", "price": 27.90 },
    { "sku": "TEE-BLK-L", "price": 27.90 },
    { "sku": "MUG-WHT",   "price": 11.90 }
  ] }'
Response 200 OK 1.4 s
{
  "applied": 2,
  "failed": 1,
  "rows": [
    { "sku": "TEE-BLK-M", "status": "applied", "price": 27.90 },
    { "sku": "TEE-BLK-L", "status": "applied", "price": 27.90 },
    { "sku": "MUG-WHT",   "status": "failed",
      "error_code": "sku_not_found" }
  ]
}
POST /v1/connections/con_8f2a/catalog/sync
Request
curl -X POST https://api.zikkio.com/v1/connections/con_8f2a/catalog/sync \
  -H "Authorization: Bearer zk_live_••••"
Response 202 Accepted 41 ms
{
  "job_id": "job_9c1e",
  "status": "queued",
  "last_sync": "2026-10-07T06:12:00Z",
  "rows": 12480
}
EVENT catalog.synced
Zikkio sends
POST https://yourapp.example.com/webhooks/zikkio
X-Zikkio-Signature: t=1759817520,v1=5f1c9e…
Content-Type: application/json

{
  "event": "catalog.synced",
  "connection_id": "con_8f2a",
  "rows": 12480,
  "added": 12,
  "removed": 3,
  "price_changes": 148,
  "occurred_at": "2026-10-07T06:14:33Z"
}
You reply 200 OK no reply? we retry for 24 hours
HTTP/1.1 200 OK

The hard parts, already solved

A Shopify client takes a week. Keeping it alive on thousands of stores for years is the job.

Truncation guard

An import that would delete more than 90% of a catalog is refused and held for review. The rule exists because it happened once.

Tokens that stay valid

Shopify tokens expire after an hour. Zikkio refreshes them, rotates the refresh token before its 90 days run out and locks the refresh across hosts, so a connected store stays connected.

Million-row catalog cache

Shopify bulk operations, resumable page downloads and retries on 429s and deadlocks keep catalogs with millions of rows complete.

Bulk writes, per-row results

Hundreds of prices in one call and a result for every SKU, on six platforms.

Variants, normalised

One row per variant with the same fields on every platform.

Platform quirks, handled

Magento attribute codes, PrestaShop XML webservices, stores behind Cloudflare: already in the code.

Priced per connected store

Public prices, a free plan that never expires and no metering on API calls. Every plan has a connect page, and webhooks come with every paid plan.

Developer

Build and test the integration, free for as long as you need.

$0 /month

3 stores included

No credit card

Start for free
  • All seven platforms
  • Catalog read, price and inventory write
  • Zikkio-branded connect page
  • Demo stores for testing

Starter

For your first customers in production.

$99 /month

15 stores, then $6 each

Billed monthly

Choose Starter
  • Everything in Developer
  • Webhooks included
  • Standard DPA
  • Email support

Growth

Recommended

For products with a growing base of connected stores.

$299 /month

75 stores, then $4 each

Billed monthly

Choose Growth
  • Everything in Starter
  • Branded connect page
  • Several catalog refreshes a day
  • Your own Shopify, BigCommerce and Wix apps

Scale

For platforms with hundreds of stores and a security review.

$799 /month

300 stores, then $2.50 each

Billed monthly

Choose Scale
  • Everything in Growth
  • Custom domain and SLA
  • Custom DPA and access logs
  • EU data residency
  • No metering on API calls
  • A full catalog refresh every day
  • Webhooks on every paid plan
  • Cancel any time

Prices in US dollars, taxes excluded. More than 300 stores? Talk to us Compare all plans

Pricefy runs 25,000 stores on Zikkio

Pricefy reprices e-commerce catalogs for its customers. Every day it reads each store’s catalog through Zikkio, computes new prices and writes them back in bulk, on every platform its customers sell on.

Pricefy is built by the same team as Zikkio.

25,000 stores connected
8M API calls a month
7 platforms in production
“The catalog cache and the token handling are the parts we would never want to build again.”
Paul Morell Founder, Pricefy
The pricefy.io home page

Building repricing, feeds, PIM or ERP for online stores? You need the same calls.

Start for free

Straight answers

What teams ask before they connect their first store.

Do you really write prices on all six platforms?
Yes. Shopify, WooCommerce, Magento 2, PrestaShop, BigCommerce and Wix accept bulk price updates with a per-row response. Google Merchant Center is read-only today.
Is the catalog live or cached?
Cached. Zikkio keeps one row per variant for every connected store and answers reads from that copy, so your calls never wait on the store. A full refresh runs every day, and POST /catalog/sync starts one whenever you need it.
How does a merchant connect a store?
On Shopify, BigCommerce and Wix by installing an app. On Google Merchant Center with a Google sign-in. On Magento 2 with an admin login, 2FA included. On WooCommerce and PrestaShop with a key the merchant creates once in the store admin. Zikkio renews Shopify tokens before they expire.
What about orders and customers?
Zikkio reads orders on every platform. Customers are not available yet.
Where does the data live?
On AWS in the United States (us-west-2). Store keys are encrypted with AES-256 and catalogs are cached on Zikkio’s servers. On the Scale plan the data can stay in the EU.
Can I try it before paying?
Yes. The free plan includes three connected stores and demo stores for every platform.

Connect your first store today.

Free plan with three stores on every platform. No card, and no sales call unless you ask for one.

POST /v1/connect/sessions
curl -X POST https://api.zikkio.com/v1/connect/sessions \
  -H "Authorization: Bearer zk_test_••••" \
  -d '{ "platform": "shopify" }'
201 Created
{ "connect_url": "https://connect.zikkio.com/s/ses_3kd9" }