How to get product data as a JSON API from a stable URL
To get product data as a JSON API, import the products into ScrapeOra, publish them as a feed, and call the feed's URL with a plain GET. Each record carries the product's title, description, images, variants, SKU, the supplier's price, your price with your markup applied, stock, the supplier listing's address, and when it first appeared and last changed. The URL stays the same while the data behind it updates on the schedule you choose.
This is for the case where you do not want ScrapeOra to publish to a store for you: you want the data in your own application, a spreadsheet, a second storefront you run yourself, or a tool that expects a product feed. No importer to write, no pages to parse, no job to babysit. It takes about ten minutes.
What you need
- A ScrapeOra account. The free plan includes a public feed of up to 20 products, so you can test the whole flow before paying.
- A product or category link from a supplier you work with, or a supplier connected through its official API.
- Somewhere to read JSON: a script, an app, a no-code tool, or a spreadsheet that can fetch a URL.
1. Import the products you want to serve
In ScrapeOra, open Import and paste a product link or a whole category link. Pick the products you want and finish the import without publishing to a store. They land in your product library with their variants, images, price and stock, and each one is matched to a stable source key, so importing the same product again updates it instead of duplicating it.
You can leave the store step out entirely. The library is what the API reads, and a library does not need a store.
2. Publish a feed
Open Developers, then Product data API, and choose New feed. Give it a short name; that becomes the last part of its URL. A feed is a saved slice of your library: choose whether it covers every supplier or only the ones you pick, and whether products that are out of stock are included.
Every account has one address of its own, and every feed you publish lives underneath it. That segment is unguessable, so a public feed is reachable by anyone who has the link, and by nobody who does not.
3. Read it from your own system
The feed page shows the full URL. Call it with a plain GET and you get JSON: a list of products, each with its variants, images, the supplier's price, your final price with your pricing rules applied, stock, the supplier listing's address, and three dates. first_seen_at is when the product first appeared in this feed; updated_at is when its data last changed; supplier_read_at is when the supplier was last read.
- Prices are worked out per request, so changing your markup in Pricing is live on the next call. Nothing to redeploy.
- Every response carries an ETag. Send it back and an unchanged feed answers 304 Not Modified with no body, which keeps a frequent poller cheap.
- Responses allow cross-origin reads, so a browser app can call a public feed directly.
- Pagination is by limit and offset, and the response tells you the total.
4. Keep it current on a schedule
A feed can carry its own source list: the supplier links it should re-import, and how often. Add the links in the feed's Sources section and pick an interval. Each run re-reads those pages through the ordinary import, updates the products in your library, and the feed serves the new values on the next call. Products that disappear from the source are marked removed in the feed rather than deleted, so a product that comes back keeps its first-seen date.
The fastest interval depends on your plan: daily on Free and Starter, every six hours on Growth, hourly on Agency.
5. Lock it with a key (Growth and above)
If the data should not be open, switch the feed to key-protected and create a key. Send it as a Bearer token or as the password in HTTP Basic auth. A key-protected feed answers 404 to a request with no key and 401 to a wrong, revoked or expired one, so a mistyped link reveals nothing about what is behind it. Keys can be named, expire on a date, and be revoked at any time.
On the Agency plan you can also create a full-access API token for the rest of the REST API, which can start imports, edit products and publish to stores from your own code. Feeds are read-only by design; the token is for writing.
Common problems and fixes
- The URL answers 404
- Check the account segment and the feed name against the feed page. A paused feed, and a key-protected feed called without a key, both answer 404 on purpose.
- The response has fewer products than the library
- Each plan caps how many products one response carries (20 on Free). Use limit and offset to page, or upgrade for a larger response.
- Prices in the JSON do not match the supplier
- They are not meant to. price is your final price with your markup applied; supplier_price is the supplier's. If you want the raw number, read supplier_price.
- A product I removed still shows up
- It is marked with removed_at rather than dropped, so your system can tell a product that went away from one that never existed. Filter on removed_at being empty.
Frequently asked questions
- Is this included on the free plan?
- Yes. The free plan publishes one public feed of up to 20 products per response, which is enough to wire up your system and see real data. Paid plans raise the product count, add more feeds, and from Growth upward let you put a feed behind a key.
- Do I need to write code?
- Only on your side, to read JSON. Publishing the feed is a form in ScrapeOra. Many no-code tools and spreadsheets can fetch a JSON URL directly.
- How is the data kept current?
- Either by importing again yourself, or by giving the feed a source list and an interval. Each run updates the library, and the feed reads the library per request.
- Can I use it with a store ScrapeOra does not publish to?
- Yes, that is the point. If your platform can import a JSON feed, point it at the feed URL. If it needs a specific format, read the feed in a short script and reshape it.
- What about the supplier's photos and text?
- The same rules as everywhere in ScrapeOra apply. Where a supplier allows the stores it supplies to use its images and text, they are included; otherwise you get the product data and your own descriptions. The rule is decided per supplier and stated on each product.