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.

Unlimited stores, priced by API calls

Public prices and a free plan that never expires. Plans differ only in API calls a month: every paid plan has webhooks, your brand on the connect page and your own apps.

Starter

For your first customers in production.

$200 /month

26,000 API calls a month

Unlimited stores

Billed monthly

Choose Starter

Growth

For a product with a growing base of stores.

$400 /month

260,000 API calls a month

Unlimited stores

Billed monthly

Choose Growth

Scale

Recommended

For reading and repricing hundreds of stores every day.

$600 /month

650,000 API calls a month

Unlimited stores

Billed monthly

Choose Scale

Business

For large catalogs and frequent price updates.

$900 /month

1,300,000 API calls a month

Unlimited stores

Billed monthly

Choose Business

Every paid plan includes

  • Everything in Developer
  • Webhooks, signed and retried for 24 hours
  • Your brand and domain on the connect page
  • Your own Shopify, BigCommerce and Wix apps
  • Several full catalog refreshes a day
  • Email support and the standard DPA

Developer

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

$0 /month

5,000 API calls a month

Unlimited stores

No credit card

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

Enterprise

More than 1,300,000 API calls a month? Tell us your volume and we will put a plan together.

Talk to us

Prices in US dollars, taxes excluded. Going over your calls never stops your integration: we let you know and suggest the plan that fits. Compare all plans Compare with API2Cart

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.

See how repricing works 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.
Can I try it before paying?
Yes. The free plan includes 5,000 API calls a month, unlimited stores and demo stores for every platform.

Connect your first store today.

Free plan with 5,000 API calls a month and unlimited stores. 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" }