---
name: apify-bing-rank-tracking
description: Track Bing rankings for any keyword with the Apify Bing Search API Actor (johnvc/bing-search-api). Each run returns the SERP as rows with page, position, title and the real destination url, geotargeted to a city and rendered for desktop, mobile or tablet, so successive runs become a Bing rank history for your domain and competitors. Bing SEO is underserved by mainstream rank trackers; this gives you the raw positions as data you own, on your schedule. Use when the user wants bing rank tracking, a bing position check by city or device, bing serp monitoring, or seo rank data outside Google. Pay per page, MCP-ready for Claude and other AI agents.
author: John Cole
author_url: https://github.com/johnisanerd
license: MIT
metadata:
  version: "1.0"
---

# Bing Rank Tracking by City and Device, on a Schedule

A Bing rank tracker: keyword plus city plus device in, ranked rows out, with your domain's absolute position per run accumulating into history.

## When to use this skill

- The user wants "bing rank tracking" for a domain across keywords.
- They need positions by city (`location`) or by device, which dashboards rarely expose for Bing.
- An SEO team wants scheduled Bing position data to complement their Google tracker.
- They want to verify a Bing SEO fix moved the needle.

Not for: one-off SERP extraction (use the companion apify-bing-scraper skill) or Google positions (this Actor covers only the Bing surface).

## What you get

The ranking signal, one row per result per keyword run:

- `page` plus `position` give absolute rank (position restarts each page)
- `url` is the real destination; match your domain against it, not `displayedUrl`
- `title` and `snippet` show what Bing renders for you and competitors
- `query` echo plus your run timestamp make history rows self-describing

## Prerequisites

- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).

## The Actor

- Store page: https://apify.com/johnvc/bing-search-api?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID: `johnvc/bing-search-api`
- Pricing: pay per event; see the cost section below and `references/gotchas.md` for live-price commands.

## Run it with the Apify CLI

Rank check, one keyword, one city, desktop (2 pages = top ~20):

```bash
apify actors call "johnvc/bing-search-api" -i '{"query":"managed it services","max_pages":2,"location":"Denver, Colorado"}' \
  --json \
  --user-agent apify-awesome-skills/apify-bing-rank-tracking \
  2>/dev/null
```

Same keyword on mobile:

```bash
apify actors call "johnvc/bing-search-api" -i '{"query":"managed it services","max_pages":2,"location":"Denver, Colorado","device":"mobile"}' \
  --json \
  --user-agent apify-awesome-skills/apify-bing-rank-tracking \
  2>/dev/null
```

Confirm live pricing and the input schema before a large batch:

```bash
apify actors info "johnvc/bing-search-api" --json \
  --user-agent apify-awesome-skills/apify-bing-rank-tracking \
  2>/dev/null
```

Every call carries the three flags this repo expects: `--json`, `--user-agent apify-awesome-skills/apify-bing-rank-tracking`, and `2>/dev/null`.

## Run it from Claude or another AI agent (MCP)

The Actor is MCP-ready. Add the hosted server URL:

`https://mcp.apify.com/?tools=actors,docs,johnvc/bing-search-api`

Then ask, for example: "Check where example.com ranks on Bing for "managed it services" in Denver and list who holds the top three spots." MCP setup docs: https://docs.apify.com/platform/integrations/mcp

## Workflow

1. Fix keywords, cities, and devices; identical inputs per run are what make runs comparable.
2. Run per keyword per city on a schedule; `max_pages` 2 covers the top twenty in most markets.
3. Match your domain against `url` per row; record page, position, and absent-below-cutoff.
4. Track competitor domains from the same rows at no extra cost.
5. Alert on drops beyond a threshold and on new domains entering the top ten.

## Inputs

- `query` (string, required): the search term
- `max_pages` (integer, default 1): pages to fetch, the cost driver
- `include_ads` (boolean, default false): also emit ad rows
- `location` (string): city-level geotargeting, for example "Seattle, Washington"
- `country` (string): two-letter country code
- `market` (string): market code such as `en-US`, overrides country
- `safe_search` (enum `Moderate`, `Strict`, `Off`, default `Moderate`)
- `device` (enum `desktop`, `mobile`, `tablet`, default `desktop`)

## Cost

Billing is pay per event, plus a negligible platform fee per dataset row. Prices below are the BRONZE tier at the time of writing; confirm live prices with the info command above.

- About $0.015 per page. A 2-page check is about $0.03 per keyword per city.
- 50 keywords daily at 2 pages is about $1.50 per day; weekly, about $6.50 per month.

Suggested confirmation thresholds: warn the user over about $5; get explicit confirmation over about $20. Present cost as "around $X", never a guarantee.

## Honest limits

- A domain below `max_pages` is "below cutoff", not gone; widen pages when precision matters.
- City targeting shifts local-intent queries most; national queries move less between cities.
- SERPs move between crawls; single-run deltas are noise, trends are signal.

## Troubleshooting

- Your domain never appears: match on `url` (destination), not `displayedUrl`, and check the device view.
- Ranks disagree with a browser check: personalization and session history; the Actor's view is the neutral one.
- One `errorMessage` row: clean failure; skip the datapoint rather than logging it as a drop.

See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.

## Related Actors

- DuckDuckGo Scraper: https://apify.com/johnvc/DuckDuckGo-Scraper-for-serp-rankings?fpr=9n7kx3&fp_sid=skillrepo
- Yandex Search Scraper: https://apify.com/johnvc/Scrape-Yandex?fpr=9n7kx3&fp_sid=skillrepo
- Baidu Search Scraper: https://apify.com/johnvc/Baidu-Search-Scraper?fpr=9n7kx3&fp_sid=skillrepo
- Naver Search API: https://apify.com/johnvc/naver-search-api?fpr=9n7kx3&fp_sid=skillrepo
