Shopify Endpoints Extractor avatar

Shopify Endpoints Extractor

Pricing

Pay per event

Go to Apify Store
Shopify Endpoints Extractor

Shopify Endpoints Extractor

Extract structured JSON data from Shopify public endpoints. Crawl products, collections, and store metadata to integrate into your apps.

Pricing

Pay per event

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 hours ago

Last modified

Share

Shopify Store Intelligence API | Catalog, Collections & Merch Signals

Analyze public Shopify storefront endpoints such as products.json, collections.json, and meta.json — no admin access or app install required. Get store summaries, catalog samples, content metadata, and merchandising rollups in one normalized output.

Store Quickstart

  • Start with 1–2 public storeUrls and keep product / collection samples around 10–25.
  • Leave includeContentMetadata off for the fastest first run, then turn it on when you need blog or page intelligence.
  • Use dryRun: true before scaling to multi-store or webhook workflows.

Key Features

  • 🛍️ Multi-store support — analyze up to 50 Shopify storefronts per run
  • 📦 Catalog sampling — fast product and collection samples via public JSON endpoints
  • 🧠 Merch rollups — vendor, tag, and product-type counts from sampled products
  • 🏪 Store summary — normalized name, domain, currency, description, theme hint, canonical URL
  • ⚠️ Restriction-aware — surfaces 401/403/404/non-JSON cases clearly instead of failing silently
  • 🧾 Optional pages / blogs metadata — enabled only when you need it

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
storeUrlsarrayprefilledOne or more Shopify storefront URLs. Custom domains and *.myshopify.com domains both work. Maximum 50 stores per run.
productSampleLimitinteger25Maximum number of public products to fetch per store from /products.json.
collectionSampleLimitinteger25Maximum number of public collections to fetch per store from /collections.json.
includeContentMetadatabooleanfalseAttempt lightweight metadata fetches from /pages.json and /blogs.json when public storefront endpoints expose them.
contentSampleLimitinteger10Maximum public pages or blogs to sample per store when includeContentMetadata is enabled.
timeoutMsinteger15000Per-request timeout in milliseconds.
deliverystring"dataset"Where to send results. Dataset is best for inspection; webhook posts the same payload to your endpoint.
webhookUrlstringRequired when delivery is webhook.

Input Example

{
"storeUrls": [
"https://colourpop.com",
"https://allbirds.com"
],
"productSampleLimit": 10,
"collectionSampleLimit": 6,
"includeContentMetadata": true,
"contentSampleLimit": 5,
"delivery": "dataset"
}

Output

FieldTypeDescription
metaobject
resultsarray
results[].inputUrlstring (url)
results[].normalizedUrlstring (url)
results[].hostnamestring
results[].statusstring
results[].storeobject
results[].summaryobject
results[].collectionsarray
results[].productSamplesarray
results[].rollupsobject
results[].contentobject
results[].warningsarray
results[].errornull

Output Example

{
"meta": {
"generatedAt": "2026-04-10T17:06:39.370Z",
"totals": {
"stores": 1,
"ok": 1,
"restricted": 0,
"errors": 0,
"warningCount": 3
},
"limits": {
"productSampleLimit": 8,
"collectionSampleLimit": 5,
"contentSampleLimit": 5,
"includeContentMetadata": true
},
"duplicateInputsSkipped": 0,
"notes": [
"Vendor, tag, and product-type rollups are derived from sampled public products only.",
"Warnings highlight public endpoint restrictions or partial storefront exposure."
]
},
"results": [
{
"inputUrl": "https://colourpop.com",
"normalizedUrl": "https://colourpop.com",
"hostname": "colourpop.com",
"status": "ok",
"store": {
"name": "ColourPop",
"description": "Shop ColourPop® top-rated makeup for eyes, lips & face. From Super Shock Shadow to glossy balms & liners, plus iconic collabs. Find your match - shop now!",
"url": "https://colourpop.com",
"canonicalUrl": "https://colourpop.com/",
"domain": "colourpop.com",
"myshopifyDomain": "colourpop-prd.myshopify.com",
"currency": "USD",
"country": "US",
"province": "California",
"city": "Oxnard",
"locale": "en",

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~shopify-store-intelligence/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "storeUrls": [ "https://colourpop.com", "https://allbirds.com" ], "productSampleLimit": 10, "collectionSampleLimit": 6, "includeContentMetadata": true, "contentSampleLimit": 5, "delivery": "dataset" }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/shopify-store-intelligence").call(run_input={
"storeUrls": [
"https://colourpop.com",
"https://allbirds.com"
],
"productSampleLimit": 10,
"collectionSampleLimit": 6,
"includeContentMetadata": true,
"contentSampleLimit": 5,
"delivery": "dataset"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/shopify-store-intelligence').call({
"storeUrls": [
"https://colourpop.com",
"https://allbirds.com"
],
"productSampleLimit": 10,
"collectionSampleLimit": 6,
"includeContentMetadata": true,
"contentSampleLimit": 5,
"delivery": "dataset"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Run weekly for trend tracking; daily for competitive launch monitoring.
  • Use webhook delivery to push insights into your BI tools or marketing Slack.
  • Archive results in Apify Dataset for your own historical trend analysis.
  • Combine with ai-visibility-monitor-actor for AI-era brand surface coverage.
  • Start with a small watchlist, iterate on keyword precision before scaling.

FAQ

What platforms are covered?

Varies by actor — see each actor's input schema for the full source list. Most cover 3–8 major platforms per vertical.

How is data deduplicated across sources?

The actor normalizes entity identifiers (brand name, SKU) before aggregation — cross-source duplicates are merged.

Can I whitelabel the output?

Dataset rows are raw data — build your own presentation layer to whitelabel.

Is the sentiment scoring accurate?

Sentiment uses rule-based + keyword scoring tuned for English. For non-English content, treat scores as directional rather than absolute.

Can I share the dashboard output?

Export from Dataset API into your BI tool (Looker, Metabase, Tableau) for stakeholder-facing dashboards.

Pair this actor with other flagship intelligence APIs in the same portfolio:

Pricing & Cost Control

Apify Store pricing is usage-based, so total cost mainly follows how many storeUrls you process plus how deep you sample products, collections, and content. Check the Store pricing card for the current per-event rates.

  • Start with 1–2 storeUrls while validating the schema.
  • Keep productSampleLimit, collectionSampleLimit, and contentSampleLimit low for first passes.
  • Leave includeContentMetadata off unless you need blogs or pages.
  • Use dryRun: true before daily or multi-store runs.