[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Bulk update BrightLocal Local Rank Tracker keywords

> Add or swap keywords across many BrightLocal Local Rank Tracker reports at once and re-run them, without the CSV round trip for every change.

Source: https://cotlet.dev/integrations/brightlocal-api-mcp-server/bulk-update-rank-tracker-keywords

A new service line means every location needs a new keyword, and BrightLocal tracks keywords per report, so the change touches dozens of reports.

Cotlet does it in your own BrightLocal account with list\_rank\_tracker\_reports, update\_rank\_tracker\_keywords and rerun\_report, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=brightlocal) [All BrightLocal tools](https://cotlet.dev/integrations/brightlocal-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can BrightLocal do this on its own?

BrightLocal's REST API can update reports, and the CSV bulk upload covers many reports in the app (checked 23 Oct 2026). The official MCP server is read-only. A city-specific keyword per location still means building the CSV rows by hand or writing code against the API.

## How you do it in BrightLocal today

1. Open Local SEO Tools > Rank Tracker and click Settings, then Download Report Settings for a CSV of every location's rank tracker settings.
2. Open the CSV and edit the Search terms column (J), separating terms with a pipe character, for example plumber new york|plumber near me.
3. Back on the overview page, click Bulk Uploads, then Upload CSV.
4. Click Actions > Re-run Report in each report, because the new keywords show only after a run.
5. For one report, open Actions > Edit Report, scroll to Search Settings, enter one term per line and click Update Report.

## How to bulk update BrightLocal Local Rank Tracker keywords

Prompt

```
Add "invisalign" plus the city to the keywords of every Local Rank Tracker report in the Texas group, then re-run those reports.
```

1. 01  
### List the reports to change  
list\_rank\_tracker\_reports returns each report with its location city and current keyword count. The agent keeps the reports in the group you named.
2. 02  
### Check the keyword ceiling  
A Local Rank Tracker report holds at most 100 search terms. The agent counts the new total first and skips a report that would pass 100, naming it in the result.
3. 03  
### Build the keyword per city  
For each report the agent adds the term with the city from the location, for example "invisalign austin", and drops terms that are already tracked.
4. 04  
### Save the keywords  
update\_rank\_tracker\_keywords saves the new list on the report. It reaches nobody and one more call restores the old list, so it does not wait for your OK.
5. 05  
### Re-run so the data appears  
BrightLocal shows new keywords only after the next run. rerun\_report starts it, and the agent asks before each run if you left confirmation on, because every manual run is counted against the account.

### What you get back

Example data

```
Texas group: 12 reports
Added "invisalign" + city to 11
Skipped 1: Summit Ortho already tracks 100 terms
Re-run started for 11 reports
```

### Other ways to ask

- Remove "teeth whitening" from every report and add "teeth whitening near me".
- Add the keywords from my pasted list to one location only.
- Update the keywords but do not re-run anything, I will run them tonight.

## What BrightLocal allows, and what to know first

- A Local Rank Tracker report accepts up to 100 search terms; more needs a custom plan.
- Changes to a report's settings do not show until the next report run.
- Ad hoc Local Rank Tracker reports are run once and must be re-run by hand to update.
- On an Ad-hoc location, each manual report run uses an Ad-hoc Report Run from the plan.

rerun\_report asks for your OK by default. To run it on a schedule without you, switch confirmation off for that tool in your dashboard.

Sources: [BrightLocal Help: Can I bulk update keywords in Local Rank Tracker reports?](https://help.brightlocal.com/hc/en-us/articles/360020466820-Can-I-bulk-update-keywords-in-Local-Rank-Tracker-reports) · [BrightLocal Help: How do I add or change keywords in a Rank Tracker report?](https://help.brightlocal.com/hc/en-us/articles/360034525474-How-do-I-add-or-change-keywords-in-a-Rank-Tracker-report) · [BrightLocal Help: How many search terms can I enter into the Rank Tracker?](https://help.brightlocal.com/hc/en-us/articles/12626400363922-How-many-search-terms-can-I-enter-into-the-Rank-Tracker) · [BrightLocal Help: Getting Started with BrightLocal](https://help.brightlocal.com/hc/en-us/articles/12625981312402-Getting-Started-with-BrightLocal)

## Call update\_rank\_tracker\_keywords from a script

curl

```
curl -X PATCH https://cotlet.dev/api/v1/brightlocal/reports/lrt_4821/rank-tracker-keywords \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["dentist austin","emergency dentist austin","teeth whitening austin","dental implants near me","invisalign austin"]}'
```

Example response

```
{
"report_id": "lrt_4821",
"location": "Harbor Dental, Austin",
"keyword_count": 5,
"added": [
"invisalign austin"
],
"removed": [],
"takes_effect": "next run"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is brightlocal\_write → update\_rank\_tracker\_keywords. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/brightlocal-api-mcp-server.md#automations)

## BrightLocal tools this automation uses

__Cotlet BrightLocal tools used to bulk update BrightLocal Local Rank Tracker keywords__
| Tool | Parameters |
| ------------------------------- | ------------------------ |
| list\_rank\_tracker\_reports | location\_id, cursor |
| update\_rank\_tracker\_keywords | report\_id, keywords |
| rerun\_report | report\_id, report\_type |

[All 11 BrightLocal tools with descriptions](https://cotlet.dev/integrations/brightlocal-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect BrightLocal to Cotlet?

Yes. You sign in to BrightLocal yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get BrightLocal once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More BrightLocal automations

- [Weekly BrightLocal rank drop report for every location](https://cotlet.dev/integrations/brightlocal-api-mcp-server/weekly-rank-drop-report.md)
- [Reply to new Google reviews in BrightLocal](https://cotlet.dev/integrations/brightlocal-api-mcp-server/reply-to-google-reviews.md)
- [BrightLocal API and MCP server: every tool](https://cotlet.dev/integrations/brightlocal-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to BrightLocal.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with BrightLocal.

[Sign up free](https://cotlet.dev/app/signup?app=brightlocal)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
