Shopify Shop.app Scraper avatar

Shopify Shop.app Scraper

Pricing

from $8.00 / 1,000 results

Go to Apify Store
Shopify Shop.app Scraper

Shopify Shop.app Scraper

Shop.app Scraper extracts product data from Shop.app including category pages, keyword search results, and the public deals page. It is designed for catalog research, merchandising analysis, pricing checks, and product discovery workflows.

Pricing

from $8.00 / 1,000 results

Rating

0.0

(0)

Developer

Hypebridge

Hypebridge

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

6

Monthly active users

12 days ago

Last modified

Share

What does Shop.app Scraper do?

Shop.app Scraper extracts product data from Shop.app, including category pages, keyword search results, and the public deals page. It is designed for catalog research, merchandising analysis, pricing checks, and product discovery workflows where you need structured results instead of browsing the site manually.

Why scrape Shop.app?

  • Track category assortments: Pull products from categories like socks, beauty, home, or fitness to monitor what is being promoted.
  • Research search demand: Run keyword searches and inspect which products surface for a term.
  • Monitor deals and discounts: Capture products shown on the public deals page, including sale pricing where available.
  • Enrich product records: Open product detail pages to collect descriptions, variants, options, reviews, and media.

What data can Shop.app Scraper extract?

FieldTypeDescription
idStringShopify product ID
titleStringProduct title
urlStringCanonical Shop.app product URL
shopNameStringMerchant name
priceAmountStringCurrent price
originalPriceAmountStringOriginal price when discounted
discountPercentNumberComputed discount percentage
reviewCountNumberReview count
imagesArrayProduct image URLs
offersArrayPromotions attached to the product
shopObjectMerchant metadata — contact email, phone, website, business address, logo, and merchant-wide review analytics
isRestrictedBooleanWhether Shop.app flags the product as restricted. Only returned for search results; null on category and deals records
sourceLabelStringWhether the record came from a category, search, or deals page

Fields that require detail enrichment

These are populated only when enrichProductDetail is enabled. With the default false, they are null — that is expected, not a failure.

FieldTypeDescription
description / descriptionHtmlStringFull product description
variantsArrayVariant pricing and selected options
variantCountNumberNumber of variants the product has
optionsArrayOption names, values, and swatches
mediaArrayProduct media items
reviewsArrayFirst-page product review records
reviewsMediaArrayCustomer review photo URLs
reviewBreakdownObjectStar-rating distribution, plus written-review and rating totals (these differ)
attributesObjectColour, size, gender, and age group. Only apparel and soft goods publish these; null for products that carry none
onlineStoreUrlStringThe merchant's own product page
salesLast30DaysNumberApproximate units sold in the last 30 days
productWarningsArrayRegulatory product warnings, where the merchant supplies them

Detail enrichment also upgrades offers from opaque discovery stubs to readable promo copy, such as "Buy 3, get 10% off select items in cart".

The Output tab contains the full schema.

How to scrape Shop.app

  1. Open Shop.app Scraper in Apify.
  2. Add one or more category URLs (e.g. https://shop.app/categories/19/socks), the offers page (https://shop.app/offers), or search terms.
  3. Set Max items to control how many products the run can collect.
  4. Enable Enrich with product detail if you need variants, reviews, and full descriptions.
  5. Start the run and download the dataset as JSON, CSV, Excel, or HTML.

Input

ParameterTypeDefaultDescription
startUrlsArray[]Shop.app category, offers, or product URLs to scrape
searchTermsArray[]Search terms to submit through the Shop.app search UI
enrichProductDetailBooleanfalseOpen each product page for richer fields
maxItemsNumber20Maximum number of products to extract
debugModeBooleanfalseSave screenshots and HTML when requests fail

Example input: category scrape

{
"startUrls": [
{ "url": "https://shop.app/categories/19/socks" }
],
"enrichProductDetail": true,
"maxItems": 25
}

Example input: search scrape

{
"searchTerms": ["wrinkle free travel clothes"],
"maxItems": 20
}

Example input: deals scrape

{
"startUrls": [
{ "url": "https://shop.app/offers" }
],
"enrichProductDetail": false,
"maxItems": 50
}

Output

Results are stored in the Dataset tab. Each record includes both product fields and run metadata such as sourceUrl, sourceLabel, and scrapedAt.

Sample output

{
"id": "6630346915889",
"slug": "body-wash",
"title": "Body Wash",
"url": "https://shop.app/products/6630346915889/body-wash",
"shopName": "SALT & STONE",
"priceAmount": "36.0",
"priceCurrency": "USD",
"reviewCount": 5081,
"description": "A multi-benefit, refreshing gel body cleanser.",
"variants": [
{
"id": "gid://shopify/ProductVariant/39446676111409",
"title": "Bergamot & Hinoki / 15.2 FL OZ / 450 ML",
"price": { "amount": "36.0", "currencyCode": "USD" },
"compareAtPrice": { "amount": null, "currencyCode": null },
"availableForSale": true,
"selectedOptions": [
{ "name": "Scent", "value": "Bergamot & Hinoki" }
],
"sellingPlanAllocations": []
}
],
"shop": {
"id": "23178",
"shopifyId": "16604869",
"websiteUrl": "https://www.saltandstone.com",
"contactEmail": "hello@saltandstone.com",
"contactPhone": "877-210-7911",
"businessAddress": ["7080 Hollywood Blvd. #1100", "Los Angeles, California 90028", "United States"],
"logoUrl": "https://cdn.shopify.com/shop-assets/.../logo.png",
"productReviewAnalytics": {
"totalProductReviews": 38064,
"totalProductRatings": 57775,
"averageRating": 4.447
}
},
"reviewBreakdown": {
"totalReviews": 327,
"totalRatings": 453,
"averageRating": 4.947,
"ratingCounts": { "fiveStars": 436, "fourStars": 14, "threeStars": 1, "twoStars": 0, "oneStar": 2 }
},
"attributes": { "color": "Bergamot & Hinoki", "size": "15.2 FL OZ", "gender": null, "ageGroup": null },
"variantCount": 1,
"sourceUrl": "https://shop.app/categories/19/socks",
"sourceLabel": "CATEGORY_PRODUCTS",
"searchTerm": null,
"scrapedAt": "2026-04-17T23:15:00.000Z",
"enrichError": false
}

Tips

  • Start with a low maxItems value when validating a new source.
  • Disable enrichProductDetail if you only need fast list-level price checks.
  • Enable debugMode when diagnosing failures; screenshots and HTML are saved to the key-value store.

FAQ

Can I scrape both categories and search terms in one run?

Yes. The actor accepts both, and maxItems applies across the combined run.

What happens if a detail page fails?

The actor saves the base product record with enrichError: true instead of dropping the item entirely.

enrichError has three states: true when enrichment was attempted and failed, false when it succeeded, and null when enrichment was never attempted (enrichProductDetail was off).

Does the actor require login?

No. It only uses public Shop.app pages and public product detail pages.

Support

  • Bugs or missing fields: open an issue in the actor repository.
  • Programmatic usage: use the Apify API or schedule runs directly from the Apify platform.

Disclaimer: This actor extracts publicly visible product data. You are responsible for ensuring your use complies with applicable law, the site's terms, and any privacy obligations in your jurisdiction.