# Bing Visual Search Scraper (`piotrv1001/bing-visual-search-scraper`) Actor

The Bing Visual Search Scraper runs reverse image searches on Bing, returning the best-guess label, visually similar images with host pages, sizes and dates, related and shopping searches, and an optional AI overview — ideal for image source tracing, copyright checks and product identification.

- **URL**: https://apify.com/piotrv1001/bing-visual-search-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** AI, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 image searches

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

### 🚀 Bing Visual Search Scraper

Run a reverse image search on Bing from an image URL. The **Bing Visual Search Scraper** returns what Bing's "search by image" shows: its best guess of what the image is, visually similar images with the pages they appear on, related and shopping searches, and an optional AI overview of the image with cited sources. Use it to find where a photo is published, trace image reuse, identify products, landmarks and artworks, or get keyword ideas from a picture.

### ✨ Features

- 📷 **Image in, matches out**: Any direct image URL (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URL. One search per image.
- 🏷️ **Best-guess label**: Bing's name for the image (for example "Nike Air Jordan 1 Retro High Og Chicago"), on every row.
- 🖼️ **Visually similar images**: Title, full-size image URL, thumbnail, host page and domain, width and height, file size and format, publish date, date Bing found the page, and how many pages include the image.
- 🔎 **Related searches**: Bing's related searches and shopping searches for the image, with links.
- 🤖 **AI overview (optional)**: Bing's short AI description of the image with numbered citations (URL, title, source, snippet).
- 🔢 **Deep results**: Up to ~500 unique similar images per image, most similar first. Repeats between pages are removed.

### 🛠️ How It Works

1. **Paste image URLs**: Product photos, artwork, a picture from a website, or a data: URL.
2. **Pick the depth and extras**: How many similar images per image, whether to include related searches and the AI overview.
3. **Run the scraper**: Each row has a `type` (`similarImage`, `relatedSearch` or `aiOverview`), the image that found it and Bing's best-guess label.

### 💰 Pricing

| Event         |    Price | What you get                                                    |
| ------------- | -------: | --------------------------------------------------------------- |
| Actor start   | $0.00005 | Once per run                                                    |
| Image search  |   $0.004 | One image searched: best-guess label plus related searches      |
| Similar image |  $0.0005 | Each visually similar image returned                            |
| AI overview   |   $0.003 | Each AI overview returned (only when `includeAiOverview` is on) |

One image at the default 50 similar images costs $0.029. 100 images at the default cost $2.90. One image at the full ~500 results costs about $0.25. Related searches are included in the image search price. Images that cannot be loaded or return nothing are not charged, and neither are images Bing has no AI overview for. The run stops at your maximum charge per run.

### 📥 Input

| Field                    | Type    | Description                                                                   |
| ------------------------ | ------- | ----------------------------------------------------------------------------- |
| `imageUrls`              | array   | Image URLs (or data: URLs) to search with.                                    |
| `maxResultsPerImage`     | integer | Similar images per image, most similar first. Default `50`, maximum `500`.    |
| `includeRelatedSearches` | boolean | Save related and shopping searches (about 50 rows per image). Default `true`. |
| `includeAiOverview`      | boolean | Save Bing's AI description of the image with citations. Default `false`.      |
| `proxyConfiguration`     | object  | Keep the default.                                                             |

Example:

```json
{
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg"
    ],
    "maxResultsPerImage": 100,
    "includeRelatedSearches": true,
    "includeAiOverview": true
}
```

### 📊 Sample Output Data

Example (one row of each type for the same image):

```json
[
    {
        "type": "similarImage",
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "bestGuessLabel": "Nike Air Jordan 1 Retro High Og",
        "position": 1,
        "title": "AIR JORDAN 1 RETRO HIGH OG CHICAGO 2022 - ETKICK Reps",
        "imageUrl": "https://etkickreps.com.au/wp-content/uploads/2022/08/IMG_0253.jpg",
        "thumbnailUrl": "https://tse4.mm.bing.net/th/id/OIP.m0nsJjjr_sA5wAjyrYMuWwHaEK?r=0&pid=Api",
        "hostPageUrl": "https://etkickreps.com.au/product/air-jordan-1-retro-high-og-chicago-2022/",
        "hostPageDomain": "etkickreps.com.au",
        "width": 1000,
        "height": 563,
        "fileSize": "342208 B",
        "format": "jpeg",
        "datePublished": "2024-03-19T14:27:00.0000000Z",
        "hostPageDiscoveredDate": "2024-03-19T00:00:00.0000000Z",
        "pagesIncludingCount": 2,
        "availableSizesCount": 1,
        "accentColor": "70191F",
        "imageId": "D49DFD8903BA8BA414F6459D41B92BB55E228950",
        "bingUrl": "https://www.bing.com/images/search?view=detailv2&FORM=OIIRPO&q=Nike+Air+Jordan+1+Retro+High+Og&id=D49DFD8903BA8BA414F6459D41B92BB55E228950&simid=608009062477540089",
        "scrapedAt": "2026-10-09T10:26:52.083Z"
    },
    {
        "type": "relatedSearch",
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "bestGuessLabel": "Nike Air Jordan 1 Retro High Og",
        "position": 3,
        "text": "Nike Air Jordan 1 Retro High",
        "displayText": "Nike Air Jordan 1 Retro High",
        "category": "related",
        "searchUrl": "https://www.bing.com/images/search?q=Nike+Air+Jordan+1+Retro+High&FORM=IDINTS",
        "thumbnailUrl": "https://tse2.mm.bing.net/th?q=Nike+Air+Jordan+1+Retro+High&pid=Api",
        "scrapedAt": "2026-10-09T10:26:52.080Z"
    },
    {
        "type": "aiOverview",
        "searchImage": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "bestGuessLabel": "Nike Air Jordan 1 Retro High Og Chicago",
        "position": 1,
        "text": "This product image shows a **Nike Air Jordan 1 Retro High OG \"Chicago\"** sneaker in its classic red, white, and black colorway. First released in 1985, this colorway has been reimagined multiple times, with the 2015 version offering a more accurate construction than earlier retro versions.",
        "citations": [
            {
                "number": 1,
                "url": "https://www.goat.com/sneakers/air-jordan-1-retro-high-og-dz5485-612",
                "title": "Air Jordan 1 Retro High OG 'Chicago Lost & Found' - GOAT",
                "source": "goat.com",
                "snippet": "The Air Jordan 1 Retro High OG ‘Chicago Lost & Found’ brings back the iconic silhouette that started it all."
            }
        ],
        "scrapedAt": "2026-10-09T10:28:21.512Z"
    }
]
```

- `type` tells the rows apart. Similar images are numbered by similarity in `position`; related searches have `category` `related` or `shopping`.
- The AI overview `text` uses Markdown bold for the main subject.
- Images that fail come back as `{ "searchImage": "...", "status": "image_error" | "failed" | "no_matches", "error": "..." }` rows and are not charged.
- Bing returns no product prices in visual search.

### 🔗 Use cases

- **Find where an image is published**: List the pages and sites that use a photo, with publish dates.
- **Image reuse and copyright checks**: Spot copies of your product photos, artwork or press images.
- **Identify what is in a picture**: Get Bing's label and AI description for products, landmarks, artworks, plants and animals.
- **Keyword research from images**: Turn a product photo into the related and shopping searches people run.

### 🔗 Related Actors

- [Bing News Scraper](https://apify.com/piotrv1001/bing-news-scraper): news articles from Bing News for any keyword.
- [Bing Maps Scraper](https://apify.com/piotrv1001/bing-maps-scraper): places and businesses from Bing Maps.
- [Yandex Reverse Image Search Scraper](https://apify.com/piotrv1001/yandex-reverse-image-search-scraper): the same reverse image search on Yandex.
- [Pinterest Visual Search Scraper](https://apify.com/piotrv1001/pinterest-visual-search-scraper): Pinterest pins that look like your image.
- [AliExpress Image Search Scraper](https://apify.com/piotrv1001/aliexpress-image-search-scraper): AliExpress products that match a photo.
- [Amazon Image Search Scraper](https://apify.com/piotrv1001/amazon-image-search-scraper) — find Amazon products that look like your photo.

Find every copy of a picture and what it is. Run the **Bing Visual Search Scraper** today! 🚀

# Actor input Schema

## `imageUrls` (type: `array`):

Images to search Bing with: direct image URLs (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URLs. One search per image. Leave empty to try two example photos.

## `maxResultsPerImage` (type: `integer`):

Visually similar images (each with the page it appears on) to return per image, most similar first. Bing returns up to ~500 unique results per image.

## `includeRelatedSearches` (type: `boolean`):

Also save Bing's related searches and shopping searches for each image (about 50 rows per image, included in the image search price).

## `includeAiOverview` (type: `boolean`):

Also save Bing's AI description of the image with its cited sources. Charged per overview returned; Bing does not have one for every image.

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

Keep the default.

## Actor input object example

```json
{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
  ],
  "maxResultsPerImage": 50,
  "includeRelatedSearches": true,
  "includeAiOverview": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/bing-visual-search-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 = {
    "imageUrls": [
        "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/bing-visual-search-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 '{
  "imageUrls": [
    "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Nike_Air_Jordan_I.jpg/960px-Nike_Air_Jordan_I.jpg",
    "https://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Nintendo-Switch-Console-Docked-wJoyConRB.jpg/960px-Nintendo-Switch-Console-Docked-wJoyConRB.jpg"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/bing-visual-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/bing-visual-search-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/3Fpa3N51wmoJGts6t/builds/big2dApnFXJSVXqMx/openapi.json
