# Marketplace Resale & Dropshipping Opportunity Analyzer (`capi2/marketplace-resale-dropshipping-analyzer`) Actor

Analyze public product listings across Amazon, Alibaba, AliExpress, Etsy, eBay, TikTok Shop, Facebook Marketplace, Walmart, Shopify, and other stores. Compare costs, fees, margin, ROI, demand signals, and risk flags—without logins, purchases, or paid data.

- **URL**: https://apify.com/capi2/marketplace-resale-dropshipping-analyzer.md
- **Developed by:** [Dries Van Durme](https://apify.com/capi2) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 1,000 product analyses

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

### What does Marketplace Resale & Dropshipping Opportunity Analyzer do?

**Marketplace Resale & Dropshipping Opportunity Analyzer** turns public product pages into comparable, agent-ready product intelligence. Give it listing URLs from Amazon, Alibaba, AliExpress, 1688, Temu, Shopee, Etsy, eBay, TikTok Shop, Facebook Marketplace, Walmart, Mercado Libre, Rakuten, bol.com, Kaufland, OnBuy, Newegg, Best Buy, Target, Wayfair, Faire, DHgate, Poshmark, Depop, Vinted, Craigslist, Gumtree, Shopify, or another store and it extracts the public structured data it can verify: title, price, currency, availability, seller, product identifiers, rating, reviews, image, and evidence URL.

Add your own cost assumptions and the Actor calculates estimated fees, profit, margin, ROI, an opportunity score, a clear verdict, and risk flags. Results are available as JSON, CSV, Excel, API output, and through Apify MCP. It does not place orders, create seller accounts, bypass logins, or promise profits.

### Why use this cross-marketplace product research Actor?

- Normalize unlike product pages into one stable schema for AI agents and workflows.
- Screen supplier and resale candidates before spending money on inventory or advertising.
- Compare major retail, wholesale, resale, social-commerce, and independent stores in one dataset. Unknown domains still use the generic structured-data extractor.
- Keep every result traceable with the requested URL, canonical evidence URL, observation time, and extraction method.
- Reduce spreadsheet work for reseller research, retail arbitrage, dropshipping validation, procurement, and competitor monitoring.
- Use strict limits, DNS and private-network checks, credential stripping, timeouts, response-size caps, and redirect validation.

### How to analyze marketplace listings

1. Open the Actor input form.
2. Add one to fifty public product URLs.
3. Optionally add `sourceCost`, `targetSellPrice`, `shippingCost`, and `platformFeePercent` per item.
4. Run the Actor and open the dataset.
5. Review the evidence and risk flags before making any commercial decision.

### Input

```json
{
  "products": [
    {
      "url": "https://store.example/products/desk-lamp",
      "label": "Supplier candidate A",
      "groupId": "desk-lamp",
      "sourceCost": 14.5,
      "targetSellPrice": 39.95,
      "shippingCost": 4.5,
      "platformFeePercent": 12
    }
  ],
  "concurrency": 3,
  "timeoutMs": 20000
}
```

The Actor accepts public HTTP/HTTPS pages only. Credentials in URLs, local addresses, private-network targets, non-standard ports, oversized responses, and excessive redirects are rejected.

### Output

```json
{
  "platform": "Other / Shopify-compatible",
  "title": "Desk lamp",
  "observedPrice": 14.5,
  "currency": "EUR",
  "availability": "InStock",
  "canonicalUrl": "https://store.example/products/desk-lamp",
  "analysis": {
    "sourceCost": 14.5,
    "targetSellPrice": 39.95,
    "feeAmount": 4.79,
    "estimatedProfit": 16.16,
    "marginPercent": 40.45,
    "roiPercent": 67.94,
    "opportunityScore": 79,
    "verdict": "strong",
    "riskFlags": []
  },
  "observedAt": "2026-09-03T12:00:00.000Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field | Meaning |
|---|---|
| `platform` | Detected marketplace or generic store |
| `observedPrice` | Public price found on the page |
| `currency` | Currency published with the price |
| `sku` / `gtin` | Product identifiers when present |
| `rating` / `reviewCount` | Public reputation signals |
| `analysis.estimatedProfit` | Sell price minus source, shipping, and estimated platform fee |
| `analysis.marginPercent` | Estimated profit divided by target sell price |
| `analysis.roiPercent` | Estimated profit divided by estimated invested cost |
| `analysis.opportunityScore` | Transparent screening score from 0–100 |
| `analysis.riskFlags` | Missing or adverse evidence requiring review |
| `canonicalUrl` | Evidence page used for the observation |

### How much does marketplace product analysis cost?

The Store model is pay per event: **$0.019 per dataset result** plus an infrequent **$0.001 Actor-start event**. A 50-result run therefore costs at most about **$0.951** before any user-set maximum-charge restriction. There is no subscription and no paid upstream data API; platform usage is included in this Actor's event price. Failed or blocked pages remain visible as error rows so you can diagnose coverage rather than receiving invented values.

### Accuracy and advanced use

Product pages change frequently. The Actor prefers Schema.org Product JSON-LD and falls back to Open Graph metadata. Some marketplaces show localized prices, require consent, or restrict automated access; this Actor does not bypass those controls. Use small batches, provide explicit cost assumptions, and group comparable listings with `groupId` for downstream workflows.

For the safest decisions, verify taxes, import duties, returns, delivery times, minimum order quantities, supplier reliability, intellectual-property rights, product safety rules, marketplace policies, and actual customer demand.

### FAQ, disclaimers, and support

**Does this Actor buy or sell products?** No. It performs public-data extraction and decision support only.

**Is profit guaranteed?** No. Every number is an estimate based on the inputs and public evidence available at the observation time.

**Does it need marketplace credentials?** No, and you should not put credentials in URLs or input.

Use the Actor Issues tab for reproducible page-coverage problems. Include a public URL and the run ID, never passwords, cookies, payment data, or private seller information.

# Actor input Schema

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

Public product URLs with optional cost assumptions. Works with structured product pages from major retail, wholesale, resale, social-commerce, and independent stores; unsupported domains use the generic extractor.

## `concurrency` (type: `integer`):

Keep this low to reduce load on marketplaces.

## `timeoutMs` (type: `integer`):

Maximum time allowed for one public product-page request.

## Actor input object example

```json
{
  "products": [
    {
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "label": "Controlled scraper test",
      "sourceCost": 20,
      "targetSellPrice": 50,
      "shippingCost": 5,
      "platformFeePercent": 12
    }
  ],
  "concurrency": 1,
  "timeoutMs": 20000
}
```

# Actor output Schema

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

Dataset rows containing extracted product evidence, margin calculations, scores, and risk flags.

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

Counts of requested, successful, failed, and strong-opportunity results.

# 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": [
        {
            "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
            "label": "Controlled scraper test",
            "sourceCost": 20,
            "targetSellPrice": 50,
            "shippingCost": 5,
            "platformFeePercent": 12
        }
    ],
    "concurrency": 1,
    "timeoutMs": 20000
};

// Run the Actor and wait for it to finish
const run = await client.actor("capi2/marketplace-resale-dropshipping-analyzer").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": [{
            "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
            "label": "Controlled scraper test",
            "sourceCost": 20,
            "targetSellPrice": 50,
            "shippingCost": 5,
            "platformFeePercent": 12,
        }],
    "concurrency": 1,
    "timeoutMs": 20000,
}

# Run the Actor and wait for it to finish
run = client.actor("capi2/marketplace-resale-dropshipping-analyzer").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": [
    {
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "label": "Controlled scraper test",
      "sourceCost": 20,
      "targetSellPrice": 50,
      "shippingCost": 5,
      "platformFeePercent": 12
    }
  ],
  "concurrency": 1,
  "timeoutMs": 20000
}' |
apify call capi2/marketplace-resale-dropshipping-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,capi2/marketplace-resale-dropshipping-analyzer"
        }
    }
}

```

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/TMrkfRwpZ3p7v5tyK/builds/hyQkowaOyHT66hu9A/openapi.json
