Stop exporting CSVs by hand

The EcomSolo API is live at api.ecomsolo.com. It gives you one HTTP endpoint that returns your consolidated Shopify data — sales, shipping, orders, customers, inventory and more — across every store you have connected. You write a short SoloQL query, you get back a clean table as JSON or CSV. No dashboard switching, no per-store exports, no spreadsheet stitching, and no currency maths.

Why a multi-store Shopify API changes the job

Shopify's own Admin API is a single-store API: one shop, one token, one set of numbers. If you run five stores you write five integrations and then reconcile them yourself. The EcomSolo API is built the other way round — the account is the unit, not the shop:

primary speciality

MULTI-STORE CONSOLIDATION

Every store in one query

This is the difference that matters. Every dataset in the EcomSolo API carries a store dimension, so a single request can return one consolidated total across all of your shops — or the same total broken out per shop — without you fanning out requests and merging the results.

Connect a new store to your EcomSolo account and it simply appears in the answers. Your integration does not change, your query does not change, and nothing needs redeploying. That is the whole point: the API follows your account, not your shops.

secondary speciality

NUMBERS YOU CAN TRUST

One currency, so the totals actually add up

Cross-store reporting usually dies on currency. Adding USD orders to GBP orders gives you a number that means nothing, so somebody ends up maintaining a rates spreadsheet next to the export.

The API converts money to a single currency for you, using rates EcomSolo keeps up to date, so a consolidated total is genuinely comparable the moment it lands. Time zones are handled the same way, which means a “yesterday” figure means one thing across the whole account instead of five different things.

primary speciality

QUERY WITH SOLOQL

Ask for the numbers, not the plumbing

You do not build a request graph, page through cursors, or learn a schema before you can ask a question. You send a SoloQL query — a compact, readable, SQL-like line that names the dataset, the metrics, the grouping and the date range — and EcomSolo does the aggregating on its side.

Because the query is a string, the integration you write today keeps working when the question changes tomorrow. And a catalog endpoint describes every dataset and field at runtime, so you can discover what is available instead of hard-coding a schema that will drift.

secondary speciality

TWO FORMATS, ONE QUERY

JSON for your app, CSV for your spreadsheet

The same query serves both audiences. Ask for JSON and you get structured rows ready for your code. Send an Accept header of text/csv and you get the identical result as a tabular CSV, ready for a spreadsheet, a Google Sheets pull, or a warehouse load.

Flat pricing sits underneath all of it. The API is included on the Advanced plan and above, there are no per-call fees and no overage bills, and rate limits scale with the plan you are already on — so polling on a schedule never turns into a surprise invoice.

A worked example

Consolidated sales for the last 30 days, broken out by store, is one line of SoloQL:

FROM sales SHOW total_sales, orders GROUP BY store SINCE -30d

Send it to the query endpoint with your key and you get one row per store, with money already normalised to a single currency:

curl -X POST https://api.ecomsolo.com/v1/query \
  -H "Authorization: Bearer esk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"query": "FROM sales SHOW total_sales, orders GROUP BY store SINCE -30d"}'

Want the same thing as a spreadsheet instead? Change one header:

  -H "Accept: text/csv"

Drop GROUP BY store and the same query returns a single consolidated number for the whole account. That is the entire mental model.

What you can query

Eleven datasets are live today, and every one of them has a store dimension:

DatasetWhat it covers
ordersorders across every store, with status, totals and dates
customerscustomer profiles, spend and order counts
productsyour catalogue: titles, types, vendors and status
inventoryavailable and on-hand quantities by SKU and location
salessales, discounts, shipping, returns and net figures
sales_taxestax collected, by jurisdiction and by store
payoutsShopify Payments payouts, amounts and fees
discountscode and automatic discounts, with usage
gift_cardsissued cards, balances and status
draft_ordersdrafts and invoices, with totals
abandoned_checkoutscarts that never became orders

You do not have to take that list on trust: GET /v1/datasets returns the live catalog of datasets and their fields, so your integration can discover the schema at runtime.

The whole surface

Four endpoints, all under https://api.ecomsolo.com:

  • GET /v1/account — who you are, your plan, and your rate limit.
  • GET /v1/stores — every store connected to your account.
  • GET /v1/datasets — the self-describing catalog of datasets and fields.
  • POST /v1/query — run a SoloQL query and get JSON or CSV back.

Authentication is a single bearer token. The account owner creates keys in the EcomSolo platform under Settings → API keys, and they look like esk_live_...:

Authorization: Bearer esk_live_...

Flat pricing, and limits that scale

The API is included on the Advanced plan ($29.95/month) and every plan above it. There are no per-call fees and no overage charges, ever — the only thing that changes with your plan is how fast you may ask:

PlanRequests per minute
Advanced30
Business60
Business 200K90
Business 300K120
Unlimited180

Who it is for

Agencies and multi-store merchants. If you report on a portfolio of shops, this replaces the weekly ritual of exporting each store, converting currencies, and pasting the lot into one workbook. One query, every client shop, comparable numbers. If you would rather do that in a dashboard than in code, the same data powers one dashboard for all your Shopify stores.

BI, warehouses and spreadsheets. Point your ETL job at POST /v1/query, ask for text/csv, and load the result. Because the aggregation happens EcomSolo-side, you are moving summary rows rather than replicating every store's raw tables just to compute a total.

Ops automation. A morning pull into Slack, a stock-level check across stores, a payout reconciliation, a finance figure your accountant asks for every month — anything that used to be a human opening five admin tabs is now a scheduled script.

Start here

The documentation walks through creating a key, your first request, the SoloQL query language, the dataset catalog, rate limits, the full endpoint reference, and copy-paste recipes.

Read the docs See pricing

Conclusion

Your data should not be trapped behind one dashboard per store. One key, one query, every shop — and no per-call bill for asking.

Nikos Levo

Get Ecomsolo Now *Free Plan available

We Have Pricing Plans To Suit Every Merchant Needs

See our Pricing Plans
bg wave

Subscribe

Subscribe to ecomsolo to receive updates & guides on how to boost your sales

bg wave