# Shopify New Arrivals Scraper (`apt_marble/shopify-new-arrivals-scraper`) Actor

Watch any Shopify store for new arrivals: products created in the days you choose, with titles, prices, variants and images.

- **URL**: https://apify.com/apt\_marble/shopify-new-arrivals-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 new-arrivals

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Shopify New Arrivals Scraper

Watch one or more Shopify stores for new arrivals and get back every product created in the days you choose as clean rows: titles, prices, variants, availability and images. Built for anyone who tracks launches: trend forecasters, buyers watching competitor drops, affiliates catching new products early, and analysts measuring launch cadence.

### What you can do with it

- **Catch new drops** — paste `allbirds.com` with a 7-day window and get everything the store created this week.
- **Track launch cadence** — schedule a weekly run and count how many products each competitor launches.
- **Price new launches at birth** — launch prices plus compare-at discounts from day one.
- **Feed a trend radar** — titles, tags, types and images of fresh products across stores in one dataset.
- **Tune the window** — from the last day to the last year, per run.

### What you get

One row per new arrival. Abridged sample of a single record:

```json
{
  "storeDomain": "allbirds.com",
  "productId": "7392464955000",
  "handle": "womens-glider-sage",
  "url": "https://allbirds.com/products/womens-glider-sage",
  "title": "Women's Glider - Sage",
  "vendor": "Allbirds",
  "productType": "Shoes",
  "currency": "USD",
  "price": { "amount": 135, "currency": "USD" },
  "compareAtPrice": null,
  "variantsCount": 8,
  "availableCount": 8,
  "createdAt": "2026-09-05T10:00:00-07:00",
  "publishedAt": "2026-09-06T09:00:00-07:00",
  "imageUrl": "https://cdn.shopify.com/s/files/1/0034/example.webp?v=1784902793"
}
```

### Input reference

| Setting | Type | Default | What it does |
| --- | --- | --- | --- |
| Store domains | list of text | — | Shopify store domains to watch, e.g. `allbirds.com`. One batch of new-arrival rows is collected per store. **Required.** |
| Days back | whole number | `30` | Only products created within the last N days are collected. The catalog reads newest-first, so small windows finish fast. Maximum 365. |
| Max products | whole number | `500` | Maximum new arrivals to collect per store. The actor stops when this number is reached or the window runs out. Maximum 25,000. |
| Currency | text | empty | Three-letter currency code for prices, e.g. `USD`. Leave empty to use each store's own currency. |

### Output fields

| Field | Type | Description |
| --- | --- | --- |
| `storeDomain` | text | Store the product was read from. |
| `productId` | text | Stable product ID. |
| `handle` | text | URL slug of the product page. |
| `url` | text | Direct link to the product page. |
| `title` | text | Product name. |
| `vendor` | text | Brand or supplier when shown. |
| `productType` | text | Store's own product grouping when shown. |
| `tags` | list of text | Merchandising tags when shown. |
| `status` | text | Publication status when shown. |
| `publishedAt` | text | When the product went live on the storefront. |
| `createdAt` | text | When the product record was created — the new-arrival date. |
| `updatedAt` | text | Last edit timestamp. |
| `currency` | text | Currency code all price pairs in the row use. |
| `price` | price pair | Lowest variant price as `{ amount, currency }`. |
| `compareAtPrice` | price pair | Strike-through price when on sale, otherwise empty. |
| `minPrice` | price pair | Lowest variant price. |
| `maxPrice` | price pair | Highest variant price. |
| `variantsCount` | number | How many variants the product has. |
| `availableCount` | number | How many variants are currently in stock. |
| `options` | list | Variant axes such as Size and Color with their values. |
| `description` | text | Plain-text product description when shown. |
| `imageUrl` | text | Main product image. |
| `imageUrls` | list of text | Every product image. |
| `variants` | list | Per-variant rows: ID, title, SKU, price pair, stock flag, options, weight and image. |

### Pricing

You pay per new-arrival row, with no monthly minimum.

| What you are charged for | Price |
| --- | --- |
| New-arrival row — one row added to your dataset | **$1.5 per 1,000** |

### Limits & what this actor cannot do

- Each store walk covers up to 25,000 products; the window filter then keeps only products created in your window.
- Records are a snapshot at the moment of collection; prices, discounts and stock flags keep changing afterwards.
- Fields a store does not show come back empty rather than guessed — a product with no listed vendor has no vendor in its row.
- Stock is reported as a simple in/out flag per variant; exact quantities are not published by stores.
- Non-store domains and password-protected stores are skipped, not charged.
- Speed depends on the size of the job and on each store's own response times; no fixed throughput is promised.
- The source site's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

### FAQ

**Do I need a store account?**
No. The actor reads only what stores show publicly in their catalogs.

**Does it need my login or password?**
No. There is nothing to connect and nothing to configure — paste store domains, pick a window, and press start.

**How is "new" defined?**
A product counts when its creation date falls inside your window — e.g. the last 30 days. The run summary also reports how many catalog rows were scanned.

**How many arrivals can I collect per run?**
Up to 25,000 per store in one run.

**Can I schedule it?**
Yes. Schedule it daily or weekly from the Apify console — a 7-day window on a weekly schedule gives you every launch with no gaps and no duplicates.

**Is the data complete?**
It is complete for everything the store shows openly in its catalog. Where a store omits a field, the actor leaves it empty rather than guessing.

# Actor input Schema

## `storeDomains` (type: `array`):

Shopify store domains to watch, e.g. "allbirds.com". One batch of new-arrival rows is collected per store.

## `daysBack` (type: `integer`):

Only products created within the last N days are collected. The catalog reads newest-first, so small windows finish fast.

## `maxProducts` (type: `integer`):

Maximum new arrivals to collect per store. The actor stops when this number is reached or the window runs out.

## `currency` (type: `string`):

Three-letter currency code for prices, e.g. "USD". Leave empty to use each store's own currency.

## Actor input object example

```json
{
  "storeDomains": [
    "https://www.tentree.com/"
  ],
  "daysBack": 30,
  "maxProducts": 500,
  "currency": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Every row this run produced.

## `runSummary` (type: `string`):

What this run collected, and anything it could not read.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "storeDomains": [
        "https://www.tentree.com/"
    ],
    "daysBack": 30,
    "maxProducts": 500,
    "currency": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/shopify-new-arrivals-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "storeDomains": ["https://www.tentree.com/"],
    "daysBack": 30,
    "maxProducts": 500,
    "currency": "",
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/shopify-new-arrivals-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "storeDomains": [
    "https://www.tentree.com/"
  ],
  "daysBack": 30,
  "maxProducts": 500,
  "currency": ""
}' |
apify call apt_marble/shopify-new-arrivals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apt_marble/shopify-new-arrivals-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/USa61pkgWalZj9gHe/builds/RTDIbIZE9YtCxxhQC/openapi.json
