# Product Demand Radar: Google Trends x AliExpress (`honestdata/product-demand-radar`) Actor

Rank product ideas by real demand and real supply. Google search interest and growth on one scale (glitch-adjusted) plus AliExpress US price range, units sold, ad crowding and US-warehouse share, with a transparent opportunity score.

- **URL**: https://apify.com/honestdata/product-demand-radar.md
- **Developed by:** [Honest Data](https://apify.com/honestdata) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 product ideas

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Product Demand Radar do?

Give it a list of product ideas. For each one it measures **demand**, meaning what people search for on [Google Trends](https://trends.google.com), and **supply**, meaning what's selling on [AliExpress US](https://www.aliexpress.us) and at what price. Then it **ranks your list**. It's a **product research API** that shows both sides of the market in one table.

**In short:** Google search demand and AliExpress US supply for up to 50 ideas in one run, at $0.05 per idea, about a quarter of what running both tools separately costs.

### Why use it?

Most product research tools show you one side. A product can trend on Google while AliExpress is flooded with ads and $1 copies. Or it can sell 10,000 units with flat search interest. This shows both, with the problems in each source fixed:

- **All your ideas on one search scale.** Google Trends compares only 5 terms at a time, each on its own scale. Here every idea is on one consistent scale, so `demandIndex` values are directly comparable, with an error bar on each.
- **Growth corrected for Google's glitches.** Spring 2026 inflated small US searches about 2x for three months. `demandGrowthPct` takes market-wide jumps like that out, and `demandWarning` flags affected peaks.
- **Real prices, not teasers.** AliExpress shows new visitors first-order-only "New shoppers save $X" prices on most listings, often a fraction of what a returning buyer pays. Prices here are **regular prices** from organic listings, and `newShopperDealSharePct` shows how common the teasers are.
- **Ads and gifts kept out of the numbers.** About a quarter of AliExpress results are paid ads. They're counted in `adSharePct` but left out of prices and sales.
- **Tested every day.** An automated check runs real product ideas every morning and checks that both demand and supply come back, not just that the run finished.
- **A plain score.** `opportunityScore` (0-100) is where an idea ranks **within your own list** on search growth, search demand and units sold, averaged. It's a way to sort your shortlist, not a verdict. Every number behind it is in the row.

### What data do you get for each product idea?

| Field | What it is |
|---|---|
| `opportunityScore` | 0-100, the idea's rank within your list (growth, demand, units sold) |
| `demandIndex`, `demandSharePct` | Search interest on one scale shared by all your ideas, and its share of the total |
| `demandGrowthPct`, `demandGrowthRawPct` | Search growth over the period, glitch-adjusted and raw |
| `demandUncertaintyPct`, `demandPeakDate`, `demandWarning` | Error bar, peak date, and a warning when Google's data is suspect |
| `medianPrice`, `priceP25`, `priceP75` | Regular-price median and middle range (USD), organic listings only |
| `top10MedianSold`, `organicMedianSold` | Units sold by the top 10 listings and by all organic listings |
| `adSharePct`, `freeGiftPromoSharePct` | How much of the search is paid ads and free-gift promos |
| `newShopperDealSharePct`, `medianDiscountPct` | How common first-order-only teaser prices are, and the typical discount |
| `usWarehouseSharePct` | How much ships from a US warehouse |
| `topSeller`, `topUSWarehouseProduct` | The best-selling listing overall and from US stock, with links |
| `aliexpressResults`, `productsSampled` | How many listings compete, and how many were read |
| `status` | `ok`, or which side was missing (`demand_only`, `supply_only`, `failed`) |

### How to research product demand and supply

1. Open the Actor and click **Try for free**.
2. Paste up to **50 product ideas**, one per line, from your brainstorm or a competitor's catalog.
3. Pick the **search demand region** (default US) and the **demand period** (default past 12 months).
4. Click **Start**. Ten ideas take about 20 seconds.
5. Sort by `opportunityScore`, then read the rows. Rising search interest, solid sales at the top of AliExpress, few ads and some US-warehouse stock is a strong combination.

### How much does it cost?

**$0.05 per product idea** that comes back with both demand and supply data, so **100 ideas cost $5**. Ideas where one side fails are still delivered, free. There's also a tiny start fee of $0.00005 per run. Getting the same numbers by running our Google Trends and AliExpress tools separately (60 products sampled) costs about $0.19 per idea.

Apify's free plan includes $5 of monthly credit, which covers about **100 product ideas a month**. The run checks your max charge before it starts, so it never stops halfway through.

### Input

See the **Input** tab for every option:

- **Product ideas**: up to 50, one per line
- **Search demand region**: a Google Trends country or region code (default `US`)
- **Demand period**: the Google Trends time range (default past 12 months)
- **AliExpress products sampled per idea**: 20 to 120 (default 60)

### Output

You can download the dataset as JSON, CSV, Excel, XML or HTML. One real row:

```json
{
  "product": "car vacuum",
  "opportunityScore": 75,
  "status": "ok",
  "demandIndex": 25.827,
  "demandSharePct": 47.76,
  "demandGrowthPct": 18.8,
  "demandGrowthRawPct": 21.5,
  "demandUncertaintyPct": 0.16,
  "demandPeakDate": "2026-04-12",
  "demandWarning": "Peak falls inside a market-wide jump in Google's data.",
  "aliexpressResults": 10637,
  "productsSampled": 60,
  "medianPrice": 54.28,
  "priceP25": 30.12,
  "priceP75": 71.71,
  "medianDiscountPct": 64,
  "newShopperDealSharePct": 75.6,
  "adSharePct": 25,
  "freeGiftPromoSharePct": 0,
  "usWarehouseSharePct": 35,
  "top10MedianSold": 2000,
  "organicMedianSold": 15,
  "topSeller": {
    "title": "9000Pa Wireless Car Vacuum Cleaner USB Charging ...",
    "regularPrice": null,
    "price": 3.33,
    "soldCount": 50000,
    "rating": 3.9,
    "shipFrom": "CN",
    "url": "https://www.aliexpress.us/item/3256809073275218.html"
  },
  "topUSWarehouseProduct": {
    "title": "NEW ABS Wireless Car Vacuum Cleaner Home Appliance ...",
    "regularPrice": 40.27,
    "price": 10.89,
    "soldCount": 10000,
    "rating": 4.9,
    "shipFrom": "US",
    "url": "https://www.aliexpress.us/item/3256809335853930.html"
  }
}
```

Notice the warning: this idea's search peak (April 12, 2026) landed inside the spring 2026 glitch in Google's data, so treat that peak date with care. Growth is adjusted for market-wide drift: 21.5% raw becomes 18.8%.

### Tips

- Send ideas of the same kind together (all kitchen gadgets, say). The score ranks ideas against each other, so a mixed list says less.
- A big gap between `top10MedianSold` and `organicMedianSold` means a few listings take most of the sales.
- Sample more products per idea (up to 120) for steadier price and sales numbers.

### FAQ

**Which markets does it cover?** Supply comes from the **AliExpress US** storefront, in USD. Demand can be any Google Trends region.

**Are units sold exact?** No. They're lower bounds, because AliExpress rounds ("10,000+ sold").

**Is this search volume?** No. Google Trends measures relative search interest. All your ideas share one scale, so they compare directly.

**Can I use it from code or an AI assistant?** Yes. Use the Apify API or the Python and JavaScript clients (see the **API** tab), connect it to Make, Zapier or Google Sheets, or schedule it. AI assistants such as Claude and Cursor can call it through Apify's MCP server: `https://mcp.apify.com?tools=honestdata/product-demand-radar`.

**Is it legal?** It reads aggregated, anonymous Google Trends data and public AliExpress product listings. It collects no personal data.

**Found a problem?** Open an issue in the **Issues** tab. We read every report.

**Found it useful?** A short review on this page helps other people find it.

### More from Honest Data

- [Google Trends Scraper: Unlimited Keywords on One Scale](https://apify.com/honestdata/google-trends-one-scale): compare up to 200 keywords on one scale, with error bars and glitch flags.
- [AliExpress Product Search Scraper (US)](https://apify.com/honestdata/aliexpress-product-search): search results with the real regular price, ads and promos flagged.
- [YouTube Transcript Scraper](https://apify.com/honestdata/youtube-transcript-scraper): transcripts in bulk at $2 per 1,000, and misses are free.

# Actor input Schema

## `products` (type: `array`):

Up to 50 product ideas, written the way a shopper would search for them. Each one is measured on Google search demand and on AliExpress US supply, then the list is ranked.

## `geo` (type: `string`):

Country or region code for Google search demand, e.g. US, GB, CA. Supply always comes from the AliExpress US storefront.

## `timeRange` (type: `string`):

Period for search demand and growth. Growth compares the last quarter of the period with the first.

## `productsToSample` (type: `integer`):

How many search results to analyze per product idea (20 to 120). 60 is one full results page.

## `proxyConfiguration` (type: `object`):

Google and AliExpress both rate-limit heavy traffic. Apify Proxy is used by default.

## Actor input object example

```json
{
  "products": [
    "laptop stand",
    "magnetic phone mount",
    "led strip lights",
    "electric milk frother",
    "cable organizer"
  ],
  "geo": "US",
  "timeRange": "today 12-m",
  "productsToSample": 60,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "products": [
        "laptop stand",
        "magnetic phone mount",
        "led strip lights",
        "electric milk frother",
        "cable organizer"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("honestdata/product-demand-radar").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 = {
    "products": [
        "laptop stand",
        "magnetic phone mount",
        "led strip lights",
        "electric milk frother",
        "cable organizer",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("honestdata/product-demand-radar").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 '{
  "products": [
    "laptop stand",
    "magnetic phone mount",
    "led strip lights",
    "electric milk frother",
    "cable organizer"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call honestdata/product-demand-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,honestdata/product-demand-radar"
        }
    }
}
```

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/bDDbNjXwnPJs4qCz6/builds/mDjjm6tzM15b0u1s7/openapi.json
