# NihaoJewelry Product Scraper (`convertsimple/nihaojewelry-product-scraper`) Actor

Scrapes Nihaojewelry.com for wholesale jewelry product listings including pricing, ratings, images, and supplier information. No login required for public catalog and pricing data.

- **URL**: https://apify.com/convertsimple/nihaojewelry-product-scraper.md
- **Developed by:** [ConvertSimple](https://apify.com/convertsimple) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## NihaoJewelry Product Scraper

Scrape wholesale product data from [NihaoJewelry.com](https://www.nihaojewelry.com) — a major B2B jewelry dropshipping supplier with 400,000+ products and **public wholesale pricing** (no login required).

### What it does

This actor extracts product listings from NihaoJewelry search results. It captures structured data including wholesale prices, images, ratings, sales volume, and supplier info.

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `productUrl` | string | Full URL to the product detail page |
| `imageUrl` | string | Product image URL (480×480) |
| `title` | string | Full product name |
| `priceMin` | number | Lowest wholesale price (USD) |
| `priceMax` | number | Highest wholesale price (USD) |
| `priceCurrency` | string | Currency code (always USD) |
| `minOrder` | number | Minimum order quantity |
| `rating` | number | Average customer rating (0–5, null if no reviews) |
| `reviewCount` | number | Number of customer reviews |
| `soldCount` | number | Units sold |
| `tags` | array | Product badges (e.g. "Best Seller", "On Sale") |
| `categoryName` | string | Search query or category used |
| `sourceUrl` | string | URL of the page where the product was found |
| `scrapedAt` | string | ISO 8601 timestamp |

### Why scrape NihaoJewelry?

NihaoJewelry is one of the few large dropshipping suppliers that lists **wholesale prices publicly** — no account or login required. This makes it a valuable data source for:

- **Competitive pricing analysis** — monitor wholesale price trends across 400K+ SKUs
- **Product research** — identify trending items by sales volume and ratings
- **Inventory planning** — track product availability and minimum order requirements
- **Catalog building** — populate your own store with supplier product data

### How to use

1. Click **Try for free** on the [actor page](https://console.apify.com/actors/wZUKxKqIY8SBBIPVb).
2. Enter your search queries (e.g. `stainless steel necklace`, `earrings`, `rings`).
3. Optionally set a limit on items or pages per query.
4. Click **Run**.
5. Download results from the **Dataset** tab when finished.

#### Input options

| Field | Description |
|-------|-------------|
| `searchQueries` | Keywords to search for (one query = one search page) |
| `startUrls` | Full NihaoJewelry URLs (overrides search queries) |
| `maxItems` | Maximum products to scrape total (0 = unlimited) |
| `maxPages` | Maximum pages per search query (~60 products per page) |
| `proxyConfiguration` | Proxy settings for avoiding IP blocks at scale |

### Performance

Approximately 10–16 seconds per page (~60 products), or roughly 0.2–0.3 seconds per product. The bottleneck is server latency to China, not the scraper itself.

### Is it legal?

You are responsible for complying with NihaoJewelry's terms of service and all applicable laws. The public catalog data this actor scrapes is freely accessible without authentication. Consult your legal team if unsure.

### Technical notes

- Uses Playwright with Chrome to bypass Cloudflare protection
- Extracts data from the page's `__INITIAL_STATE__` JSON for speed (avoids waiting for Vue render)
- Blocks images, fonts, and stylesheets to reduce bandwidth
- Supports pagination across all search result pages

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search for on NihaoJewelry (e.g. earrings, stainless steel necklace, rings). Each query generates a search page to scrape.
## `startUrls` (type: `array`):

Full NihaoJewelry URLs to scrape (overrides searchQueries if set). Supports search, category, and collection pages.
## `maxItems` (type: `integer`):

Maximum number of products to scrape. Minimum 60 (one full page), maximum 6000. Stops when this limit is reached across all queries.
## `maxPages` (type: `integer`):

Maximum number of result pages to scrape per search query (0 = all available pages, ~60 products per page).
## `proxyConfiguration` (type: `object`):

Proxy settings. NihaoJewelry has Cloudflare protection — enabling Apify proxy (especially residential) helps avoid IP blocks at scale.

## Actor input object example

```json
{
  "searchQueries": [
    "earrings",
    "necklaces",
    "rings"
  ],
  "startUrls": [],
  "maxItems": 60,
  "maxPages": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

# Actor output Schema

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

All scraped product data in JSON format. Each item contains product URL, image, title, pricing, rating, review count, sold count, tags, category, and source URL.

# 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 = {
    "searchQueries": [
        "earrings",
        "necklaces",
        "rings"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("convertsimple/nihaojewelry-product-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 = {
    "searchQueries": [
        "earrings",
        "necklaces",
        "rings",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("convertsimple/nihaojewelry-product-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "earrings",
    "necklaces",
    "rings"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call convertsimple/nihaojewelry-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=convertsimple/nihaojewelry-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NihaoJewelry Product Scraper",
        "description": "Scrapes Nihaojewelry.com for wholesale jewelry product listings including pricing, ratings, images, and supplier information. No login required for public catalog and pricing data.",
        "version": "1.0",
        "x-build-id": "BPyAcj1kLwjLkEe7I"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/convertsimple~nihaojewelry-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-convertsimple-nihaojewelry-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/convertsimple~nihaojewelry-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-convertsimple-nihaojewelry-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/convertsimple~nihaojewelry-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-convertsimple-nihaojewelry-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "Keywords to search for on NihaoJewelry (e.g. earrings, stainless steel necklace, rings). Each query generates a search page to scrape.",
                        "default": [
                            "earrings",
                            "necklaces",
                            "rings"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs (optional)",
                        "type": "array",
                        "description": "Full NihaoJewelry URLs to scrape (overrides searchQueries if set). Supports search, category, and collection pages.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum Items",
                        "minimum": 60,
                        "maximum": 6000,
                        "type": "integer",
                        "description": "Maximum number of products to scrape. Minimum 60 (one full page), maximum 6000. Stops when this limit is reached across all queries.",
                        "default": 60
                    },
                    "maxPages": {
                        "title": "Maximum Pages Per Query",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of result pages to scrape per search query (0 = all available pages, ~60 products per page).",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. NihaoJewelry has Cloudflare protection — enabling Apify proxy (especially residential) helps avoid IP blocks at scale.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
