Seller Central, Vendor Central and Amazon Ads in one schema of 100+ tables. Call it over REST or MCP, query it from BigQuery, or have it delivered as files and webhooks. Amazon auth, report jobs and the two-year backfill are already running.
https://api.datadoe.com/api/v1Every call carries one header, datadoe-api-key. Create keys under Integrations → REST API.
curl https://api.datadoe.com/api/v1/util/sellers-and-vendors \ -H "datadoe-api-key: $DATADOE_API_KEY"
{
"data": [
{
"id": "1a2b3c4d-5678-90ab-cdef-112233445566",
"name": "Mugs Co US",
"accountType": "SELLER",
"marketplaceCountryCode": "US",
"sellerCentralConnection": { "initialLoadStage": "COMPLETE", "needsReauthorization": false },
"amazonAdsConnection": { "initialLoadStage": "COMPLETE", "needsReauthorization": false }
},
{
"id": "6f0e9d8c-4b3a-4f21-9e8d-7c6b5a493827",
"name": "Mugs Co DE Vendor",
"accountType": "VENDOR",
"marketplaceCountryCode": "DE",
"vendorCentralConnection": { "initialLoadStage": "SECOND_STAGE", "needsReauthorization": false }
}
]
}curl "https://api.datadoe.com/api/v1/exports/sources?query=orders&sellerOrVendorIds=1a2b3c4d-5678-90ab-cdef-112233445566" \ -H "datadoe-api-key: $DATADOE_API_KEY"
{
"sources": [
{
"id": "89b27535d27c2a94db5ae39af4717f542624ff4df7802fd633e16c78674a1778",
"name": "Order Line Items",
"tableName": "amazon_order_items_with_cogs",
"type": "SELLER_CENTRAL",
"requiresDatePeriod": true,
"columns": [ { "name": "amazon_order_id", "type": "TEXT" }, … ]
}
]
}curl -X POST https://api.datadoe.com/api/v1/exports \ -H "datadoe-api-key: $DATADOE_API_KEY" \ -H "content-type: application/json" \ -d '{ "sellerOrVendorIds": ["1a2b3c4d-5678-90ab-cdef-112233445566"], "sourceId": "89b27535d27c2a94db5ae39af4717f542624ff4df7802fd633e16c78674a1778", "columns": ["date", "amazon_order_id", "sku", "child_asin", "quantity", "item_price_value", "cogs_total_value"], "from": "2026-10-01", "to": "2026-10-13", "outputType": "JSON" }'
{
"id": "e0d7e0e0-4b2d-4f2f-8d0f-2c5d5e0d7e0e",
"status": "PENDING",
"sourceName": "Order Line Items",
"outputType": "JSON",
"creator": "API"
}
A typical export is ready in under 30 seconds. Poll every 5.curl -L https://api.datadoe.com/api/v1/exports/e0d7e0e0-4b2d-4f2f-8d0f-2c5d5e0d7e0e/raw \ -H "datadoe-api-key: $DATADOE_API_KEY"
[
{
"seller_or_vendor_name": "Mugs Co US", "marketplace_country_code": "US",
"date": "2026-10-13", "amazon_order_id": "113-4829175-6630642",
"sku": "MUG-12PK-TEAL", "child_asin": "B0D7K2QX9M",
"quantity": 2, "item_price_value": 49.98, "cogs_total_value": 17.40
},
{
"seller_or_vendor_name": "Mugs Co US", "marketplace_country_code": "US",
"date": "2026-10-13", "amazon_order_id": "114-0315562-2287419",
"sku": "HOSE-50FT-GRN", "child_asin": "B0C8W5MZ3R",
"quantity": 1, "item_price_value": 34.99, "cogs_total_value": 11.20
},
… 1,248 more rows
]Most of an Amazon integration is glue nobody sees: consent flows, report polling, backfills, re-pulls for late fees. Each row is a job your team would own on raw SP-API, next to what it turns into on DataDoe.
Built and run by Deltologic, the SP-API software house behind 200+ Amazon builds since 2020.
Free SP-API courseOn raw SP-APIRegister a developer app, build the Login with Amazon consent flow, then store and refresh tokens for every seller and region. Amazon Ads needs a second flow.
On DataDoeOne call returns a single-use link to Amazon’s own consent screen. The account owner approves, your callback gets the account ID.POST /
On raw SP-APICreate the report, poll until it finishes, download the document, decompress and parse it. Repeat per report type and marketplace.
On DataDoeThe rows already sit in tables. Name the table and the columns, get JSON, CSV, TSV, XML or Excel back.POST /
On raw SP-APIWalk two years of orders through date-windowed reports and stay under Amazon’s request quotas while you do it.
On DataDoeBackfilled when the account connects, recent weeks first, so the account is usable before the backfill finishes.amazon_
On raw SP-APIFees post days after the order and refunds weeks later. Re-pull overlapping windows and reconcile the differences.
On DataDoeRecent windows are fetched again every night: the last 28 days of order items and the last 21 days of settlements.
On raw SP-APIA separate Ads API with its own auth, profiles and async reports, keyed differently from your orders.
On DataDoeAds tables share marketplace_id, child_asin and date with orders and fees, so joining spend to sales is one condition.amazon_
On raw SP-APIEvery SP-API operation has its own rate and burst limits. You build the queue, the backoff and the 429 handling.
On DataDoeDataDoe paces its own calls to Amazon. Your code talks to one API with one key.datadoe-api-key
On raw SP-APIA report is retired or changes shape, and you find out from a failing job.
On DataDoeA table due for removal is flagged in the data scheme with its date and the table to move to. Tables also carry caveats, such as which inventory columns are snapshots.GET /
Every path reads the same tables. A BigQuery model, an export and an answer from your agent all come from the same rows, so the numbers agree wherever your team looks.
Your Amazon accounts
Your stack
CSV · JSON · TSV · XML · ExcelInboxes, spreadsheets, Power QueryFor agencies, SaaS teams and brands with many marketplaces. Your backend creates an invitation, the account owner approves on Amazon, and your callback receives the new account ID. You never register an SP-API app or store a refresh token.
needsReauthorization, a reconnect link keeps its ID and dataPOST /api/v1/util/sellers-and-vendors/invite { "name": "Northwind Home US", "tenantType": "SELLER", "accessLevel": "READ_ONLY", "redirectUrl": "https://app.yourco.com/amazon/callback" } 201 Created { "id": "4f0f1c2e-7a6b-4c3d-9e8f-1a2b3c4d5e6f", "invitationUrl": "https://app.datadoe.com/invitation/…", "expiresAt": "2026-10-21T12:00:00.000Z" }
Signs in to Seller Central and authorizes DataDoe. Amazon Ads can be added in the same flow or skipped.
GET https://app.yourco.com/amazon/callback ?success=true &sellerOrVendorId=4c9d2e71-0b8a-4e55-a1f3-9d7c6b5e4a10 &sellerOrVendorName=Northwind%20Home%20US &sellerOrVendorMarketplaceCountryCode=US &invitationId=4f0f1c2e-7a6b-4c3d-9e8f-1a2b3c4d5e6f &invitationType=CONNECT
These are the real table names you query. History is what DataDoe loads when an account connects; refresh is how it stays current after that, from 2am in each account’s local time. Event tables for Amazon notifications and Marketing Stream are off until you switch them on.
Open the interactive data scheme| Table | Columns | History on connect | Refresh |
|---|---|---|---|
amazon_Profit by SKU & Date | 106 | Follows its sources | Daily + intraday |
amazon_Profit by Date | 149 | Follows its sources | Daily + intraday |
amazon_Order Line Items | 44 | 730 days | Daily + intraday |
amazon_Settlements & P&L Components | 227 | 365 days | Daily |
amazon_Listings | 50 | Current state | Daily + intraday |
amazon_FBA Inventory Health | 115 | Current snapshot | Daily + intraday |
amazon_FBA Restock Recommendations | 36 | Current snapshot | Daily + intraday |
amazon_Returns (FBA & FBM) | 39 | 60 days | Daily |
amazon_FBA Reimbursements | 29 | 730 days | Daily |
amazon_Seller Account Health Metrics | 102 | Current state | Daily + intraday |
amazon_Search Query Performance (SQP) by ASIN (Weekly) | 34 | 21 days | Weekly |
amazon_Brand Analytics Search Terms (Weekly) | 14 | 56 days | Weekly |
amazon_FBA Ledger Details | 24 | 540 days | Daily |
amazon_Coupon Performance | 34 | 714 days | Daily |
amazon_Cost of Goods Sold (COGS) | 13 | What you upload | When you upload |
amazon_Listings (Raw JSON) | 32 | Current state | Daily |
amazon_Promotions | 46 | Current state | Daily |
amazon_Promotion Items | 22 | Current state | Daily |
amazon_AWD Inbound Shipments | 44 | Current state | Daily |
amazon_Replenishment Metrics by Date (SnS) | 46 | Current state | Daily |
amazon_Replenishment Metrics by SKU & Date | 25 | Current state | Daily |
amazon_Replenishment Offers | 21 | Current state | Daily |
amazon_Item Offers | 13 | Current state | Daily |
amazon_AWD Inbound Shipment Line Items | 14 | Current state | Daily |
amazon_AWD Replenishment Orders | 15 | Current state | Daily |
amazon_AWD Replenishment Order Line Items | 20 | Current state | Daily |
amazon_AWD Outbound Orders | 17 | Current state | Daily |
amazon_AWD Outbound Shipments | 35 | Current state | Daily |
amazon_AWD Outbound Shipment Packages | 16 | Current state | Daily |
amazon_FBA Inbound Shipments | 58 | Current state | Daily |
amazon_FBA ShipmentsBuyer data add-on | 59 | 28 days | Daily |
amazon_FBA Removal Orders | 28 | 730 days | Daily |
amazon_FBA Recommended Removals | 23 | Current snapshot | Daily |
amazon_FBA Stranded Inventory | 24 | Current snapshot | Daily |
amazon_FBA Removal Shipments | 22 | 730 days | Daily |
amazon_FBA Replacement Shipments | 21 | 730 days | Daily |
amazon_FBA Inventory by ASIN & Country | 17 | Current state | Daily |
amazon_FBA Overage Fee Charges | 16 | Current snapshot | Daily |
amazon_FBA Ledger Summary | 31 | 540 days | Daily |
amazon_FBA Storage Fee Charges | 37 | As Amazon provides | Daily |
amazon_FBA Long-Term Storage Fee Charges | 25 | 390 days | Daily |
amazon_Seller Feedback | 12 | 60 days | Daily |
amazon_Search Engagement by ASIN (Monthly) | 31 | 365 days | Weekly |
amazon_Search Engagement by ASIN (Weekly) | 31 | 91 days | Weekly |
amazon_Search Query Performance (SQP) by ASIN (Monthly) | 34 | 60 days | Monthly |
amazon_Repeat Purchase Performance | 14 | 365 days | Weekly |
amazon_Market Basket Co-Purchase (Monthly) | 11 | 365 days | Weekly |
amazon_Brand Analytics Search Terms (Daily) | 14 | 14 days | Daily |
amazon_Brand Analytics Search Terms (Monthly) | 14 | 365 days | Monthly |
amazon_Product Catalog by ASIN | 25 | Current state | Daily |
amazon_Product Catalog by ASIN (Raw JSON) | 15 | Current state | Daily |
amazon_Promotion Performance | 32 | 714 days | Daily |
amazon_Order Details PIIBuyer data add-on | 31 | Current state | Daily + intraday |
amazon_Account Status Changed Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Any Offer Changed Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_B2B Any Offer Changed Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Branded Item Content Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Detail Page Traffic Event Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_FBA Inventory Availability Changes Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_FBA Outbound Shipment Status Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Fee Promotion Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Item Inventory Event Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Item Product Type Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Item Sales Event Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Listings Item Issues Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Listings Item MFN Quantity Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Listings Item Status Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Pricing Health Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Shipment Tracking Milestone Changed Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Transaction Update Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Order Change Notifications | 16 | From when you switch it on | Event table, off by default |
amazon_Sellers & Vendors Context | 10 | Current state | With each account |
| Table | Columns | History on connect | Refresh |
|---|---|---|---|
amazon_Sales, Traffic & Inventory by ASIN & Date | 108 | 720 days | Daily |
amazon_Vendor Purchase Orders | 33 | 30 days | Daily + intraday |
amazon_Vendor Purchase Order Status | 39 | 30 days | Daily |
amazon_Vendor Shipments | 34 | 30 days | Daily |
amazon_Weekly Customer Demand | 16 | Current state | Daily |
amazon_Invoices | 36 | 90 days | Daily |
amazon_Invoice Items | 40 | 90 days | Daily |
amazon_Remittances | 23 | 364 days | Daily |
amazon_Remittance Items | 27 | 364 days | Daily |
amazon_Vendor Direct Fulfillment Orders | 38 | 30 days | Daily + intraday |
amazon_Vendor Listings | 47 | Current state | Daily |
amazon_Sales by ASIN & Hour | 14 | 28 days | Daily |
amazon_Repeat Purchase Performance | 14 | 365 days | Weekly |
amazon_Vendor Codes | 9 | What you upload | When you upload |
amazon_Market Basket Co-Purchase (Monthly) | 11 | 365 days | Weekly |
amazon_Brand Analytics Search Terms (Daily) | 14 | 14 days | Daily |
amazon_Brand Analytics Search Terms (Weekly) | 14 | 56 days | Weekly |
amazon_Brand Analytics Search Terms (Monthly) | 14 | 365 days | Monthly |
amazon_Product Catalog by ASIN | 25 | Current state | Daily |
amazon_Product Catalog by ASIN (Raw JSON) | 15 | Current state | Daily |
amazon_Coupon Performance | 34 | 714 days | Daily |
amazon_Promotion Performance | 32 | 714 days | Daily |
amazon_Traffic by ASIN & Hour | 12 | 28 days | Daily |
amazon_Inventory by ASIN & Hour | 12 | 28 days | Daily |
amazon_Vendor Direct Fulfillment Orders PIIBuyer data add-on | 24 | 30 days | Daily + intraday |
amazon_Detail Page Traffic Event Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Item Inventory Event Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Item Sales Event Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Listings Item Issues Change Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Shipment Tracking Milestone Changed Notifications | 11 | From when you switch it on | Event table, off by default |
amazon_Sellers & Vendors Context | 10 | Current state | With each account |
| Table | Columns | History on connect | Refresh |
|---|---|---|---|
amazon_Ad Performance by Campaign & Date | 30 | 56 days | Daily + intraday |
amazon_Ad Performance by ASIN & Date | 31 | 60 days | Daily + intraday |
amazon_Search Term Performance (Ads) | 35 | 60 days | Daily |
amazon_Keyword Targeting Performance | 35 | 56 days | Daily |
amazon_Ad Placement Performance | 49 | 56 days | Daily |
amazon_Ad Profit by Target and Date | 64 | Follows its sources | Daily |
amazon_Ad Profit by Search Term and Date | 68 | Follows its sources | Daily |
amazon_Ad Group Performance | 37 | 56 days | Daily |
amazon_Ad Campaigns (raw) | 28 | Current state | Daily |
amazon_Ad Targets (raw) | 40 | Current state | Daily |
amazon_Negative Keywords | 15 | Current state | Daily |
amazon_Ad Entity History | 16 | 90 days | Daily + intraday |
amazon_Ad Purchased Products | 32 | 60 days | Daily + intraday |
amazon_DSP Performance by Creative & Date | 52 | 56 days | Daily |
amazon_DSP Product Conversions by ASIN & Date | 33 | 56 days | Daily |
amazon_DSP Performance by City & Date | 39 | 28 days | Daily |
amazon_DSP Performance by Audience & Date | 35 | 56 days | Daily |
amazon_DSP Performance by Device & Date | 33 | 56 days | Daily |
amazon_DSP Performance by Supply Source & Date | 37 | 56 days | Weekly |
amazon_DSP Reach & Frequency | 17 | 30 days | Daily |
amazon_DSP Brand Suitability | 25 | 56 days | Daily |
amazon_DSP Performance by Content | 33 | 56 days | Daily |
amazon_DSP Bid Adjustments by Date | 25 | 56 days | Daily |
amazon_Ads Brand Metrics | 67 | 95 days | Weekly |
amazon_Ads Attribution Performance by Creative | 26 | 395 days | Daily |
amazon_Ads Attribution Performance by Ad Group | 26 | 395 days | Daily |
amazon_Ads Attribution Products | 38 | 89 days | Daily |
amazon_Sponsored Brands Ad Performance | 44 | 56 days | Daily |
amazon_Video Ad Extension Performance | 37 | 56 days | Daily + intraday |
amazon_Prompt Ad Extension Performance | 37 | 56 days | Daily + intraday |
amazon_Bid-Boost Audience Performance | 23 | 56 days | Daily + intraday |
amazon_Ad Groups (raw) | 21 | Current state | Daily |
amazon_Ads (raw) | 33 | Current state | Daily |
amazon_Ad Creative Assets | 39 | Current state | Daily |
amazon_AMS Campaigns | 21 | From when you switch it on | Event table, off by default |
amazon_AMS Campaign Ad Groups | 16 | From when you switch it on | Event table, off by default |
amazon_AMS Campaign Ads | 19 | From when you switch it on | Event table, off by default |
amazon_AMS Budget Usage | 16 | From when you switch it on | Event table, off by default |
amazon_AMS Campaign Diagnostics | 20 | From when you switch it on | Event table, off by default |
amazon_AMS Campaign Targets | 30 | From when you switch it on | Event table, off by default |
amazon_AMS Traffic | 29 | From when you switch it on | Event table, off by default |
amazon_AMS Conversion | 55 | From when you switch it on | Event table, off by default |
amazon_AMS SB Clickstream | 22 | From when you switch it on | Event table, off by default |
amazon_AMS SB Rich Media | 24 | From when you switch it on | Event table, off by default |
amazon_AMS SP Budget Recommendations | 24 | From when you switch it on | Event table, off by default |
amazon_Sellers & Vendors Context | 10 | Current state | With each account |
The same scheme is machine-readable at GET https://api.datadoe.com/
One schema of 100+ tables covering Seller Central, Vendor Central and Amazon Ads, with four ways to read it: a REST API for services and scripts, an MCP server for agents and AI coding tools, a BigQuery dataset for SQL, and recurring exports as CSV, JSON, TSV, XML or Excel. Webhooks push Amazon events to your own HTTPS endpoint. DataDoe runs the Amazon authorization, the report jobs and the backfill underneath.
Create a key under Integrations → REST API in DataDoe, give it a name and an expiry date, and send it in the datadoe-api-key header on every request. The MCP server takes its own key in the datadoe-mcp-key header, while Claude and ChatGPT sign in with OAuth instead. The API reference and its OpenAPI JSON are public.
Data comes out as exports. List your accounts with GET /api/v1/util/sellers-and-vendors, find a table with GET /api/v1/exports/sources, then send POST /api/v1/exports with the account IDs, table, columns, date range and output type. Exports are asynchronous: poll the export, usually ready in under 30 seconds, and download the file from GET /api/v1/exports/{exportId}/raw. Filters, grouping and aggregations run on DataDoe's side.
Each Seller Central, Vendor Central or Amazon Ads account is connected once per marketplace, and its owner authorizes DataDoe on Amazon's own consent screen. From your own product, create a single-use invitation with POST /api/v1/util/sellers-and-vendors/invite, choose read-only or read and write, and your redirect URL receives the new account ID. If Amazon stops accepting an authorization, a reconnect invitation keeps the same ID and data.
The daily fetch starts at 2am in each account's local time, and most data is in by 5am. Order items, listings, Vendor purchase orders, ad performance and inventory health also update during the day. Search Query Performance, repeat purchase and market basket refresh weekly. On connect, DataDoe backfills about two years, recent data first: 730 days of order items and reimbursements, 720 days of Vendor sales, traffic and inventory, 365 days of settlements, and around 60 days for most Amazon Ads reports. Notification and Marketing Stream tables are off by default.
Yes. DataDoe shares your data through a private Google Analytics Hub listing; subscribing creates a read-only linked dataset in your own Google Cloud project, in us-east4. Query it from BigQuery, dbt, Looker, notebooks or an agent, and join it with your own tables. On the Base Plan each query uses 0.2 AI Tokens for integrated data or 0.5 for raw data, and Google bills the BigQuery compute to your project.
Yes, with webhooks. DataDoe sends an HTTPS POST with a JSON body to your endpoint for the message types you choose, such as AMAZON_ORDER_UPDATE, AMAZON_ANY_OFFER_CHANGED or AMAZON_LISTINGS_ITEM_ISSUES_CHANGE. Each message has a messageId for deduplication, you can add a secret header to verify requests, and a failed delivery pauses the webhook and emails your team. Each delivered message costs 0.05 AI Tokens.
Yes, through Actions: POST /api/v1/actions updates listings, prices, orders, shipments, A+ Content, Amazon Ads and Vendor purchase orders. Writes are off by default, each Action type is switched on separately, you can preview any change as a dry run first, and every change is logged with Amazon's answer. See Actions for the full list.
The Base Plan is $97 a month with 2,000 AI Tokens and 10 million data rows included, and you can try it free for 14 days. Calls that list accounts or read the spec are free; an export from a standard table uses 2 AI Tokens and from a premium table 5. Extra tokens are only charged if you opt in to a spending limit or buy a bundle.
The data is plain tables with documented columns, not a proprietary format. Export any table as CSV, JSON, TSV, XML or Excel through the API, or copy what you need from the BigQuery linked dataset into a dataset you own with a regular query. Account connections are authorized on Amazon, so you can revoke DataDoe's access there at any time.
Book a call with the engineers who built it. We'll walk through the API, the data scheme and your use case, then answer the questions your team still has.
Book a demoConnect an Amazon account, create an API key and make your first call today. The Base Plan is $97 a month, and the first 14 days are free.
We use cookies to improve your experience and analyze traffic. By clicking "Accept", you agree to our use of cookies. Read the Cookie Policy.