Brand protection monitoring by country
Find counterfeit listings, unauthorized sellers and misuse of your brand on public marketplace and website pages in each country, and keep evidence you can reproduce.
Proxy URL, exit IP in Germany
http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000Residential exit IPs in Germany
Illustrative routes, not live traffic. Exits are available in most countries; the countries shown are examples.
- Country-level targeting by ISO code
- Sticky sessions per search
- One credential pair for every plan
Brand protection proxies for regional marketplaces
Counterfeit listings and unauthorized sellers often appear on one country’s storefront or marketplace domain and not on the one your team checks. Without searches from each market, they go unnoticed until customers find them.
Brand protection proxies let your monitor search public pages from an exit IP in each country you cover. One sticky netdash session per search keeps the query, its result pages and the listings you open on one exit IP, so each piece of evidence belongs to one market and one named session.
Why listings look different by country
Marketplaces and retail sites localize search results, sellers and listings by visitor country: which sellers ship to that market, which products appear, and in which currency and language. A listing that shoppers in Germany see may not appear in a search from the US.
Evidence is stronger when it shows what visitors in that country see. A capture from an exit IP in the market, with the time and session recorded, lets you repeat the search and show the listing again while it is still online.
From search to takedown request
Step 1: Define what to look for
Brand terms, product names and identifiers such as GTINs, logo images, and your list of authorized sellers.
Step 2: Pick markets and sites
The public marketplaces and sites that matter in each country.
Step 3: Search per market
Exit country = market, with one sticky session (
Sticky sessions30) per search so result pages stay consistent.Step 4: Capture evidence
The record in the table below, for every suspect listing.
Step 5: Triage
Match against authorized sellers and genuine product data. A person reviews before any action.
Step 6: Report and re-check
Use the marketplace’s rights-owner reporting process, then confirm removal with a later capture.
An evidence record you can reproduce
| Attribute | Purpose |
|---|---|
| Listing URL | Identifies the listing for the report and the re-check |
| Title and price as shown | What a shopper in that market saw |
| Seller display name | Matches against your authorized sellers. Business sellers; see the note on personal data below |
| UTC capture time | Listings change; the time makes captures comparable |
| Exit country, plan and session ID | Shows the market, and lets you repeat the capture |
| Full-page screenshot | What the page displayed, for human review and the report |
| SHA-256 of the page HTML | Shows that the stored HTML hasn’t changed since capture |
| Search query and result position | How a shopper would find the listing |
Search session configuration
The examples use the Scale plan: every residential plan uses the same syntax, and you switch plans by changing the host and port. The proxy string format explains each part of the username.
- Plan and endpoint
Scale ·
scale-eu.netdash.io:2000Europe gateway, paired with European exit countries.
- Exit country
-cc-DE, repeated per marketThe storefront you investigate. Use
GBfor the United Kingdom, notUK.- Session mode and TTL
Sticky,
30minutes per search sessionPagination and listing views stay on one exit IP while it remains available.
- Session ID
First 8 hex characters of a hash of case ID and market
Ties each capture to a session you can name in the evidence record.
- Username
USERNAME-cc-DE-session-{SID}-ttl-30The password is the proxy password from the dashboard, not your sign-in password.
- Cadence
Your review cycle, e.g. weekly per market
Keeps volume small and evidence current.
Build the username for one market search
Pick the market and copy the proxy settings into your monitor. A 30-minute sticky session is preselected.
Your route
Through the gateway to an exit IP in , , on the plan.
Proxy URL
http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000Replace USERNAME and PASSWORD with the credentials from your dashboard.
Scale, Europe gateway, exit IP in Germany, sticky for 30 min.
curl --max-time 30 -x "http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000" \
"https://api.ipify.org?format=json"import requests
proxy = "http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000"
proxies = {"http": proxy, "https": proxy} # set both, or HTTPS requests bypass the proxy
response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
response.raise_for_status()
print(response.text)import { ProxyAgent, fetch } from "undici";
const dispatcher = new ProxyAgent({
uri: "http://scale-eu.netdash.io:2000",
token: "Basic " + Buffer.from("USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD").toString("base64"),
});
const res = await fetch("https://api.ipify.org?format=json", { dispatcher, signal: AbortSignal.timeout(30_000) });
console.log(await res.text());import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: {
server: "http://scale-eu.netdash.io:2000",
username: "USERNAME-cc-DE-session-a1b2c3d4-ttl-30",
password: "PASSWORD",
},
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org?format=json");
console.log(await page.textContent("body"));
await browser.close();Example output
{"ip":"203.0.113.10"}Your output shows a different address in the country you chose.
Capture a listing with Playwright for Python
The browser launches with the gateway as its proxy server and the username and password as separate fields. The session ID comes from the case ID and market, so captures for the same case and market within the TTL share an exit IP while it stays available.
The script stores the page HTML, a full-page screenshot and a JSON record with the URL, UTC time, exit country, session ID and a SHA-256 of the saved HTML. Add title, price and seller fields with selectors for each site you monitor.
- Public listing pages only, with no logins
- Run captures at your review cadence, not continuously
- For bulk search pages, see Scrapy; setup details in the Playwright guide and Python guide
import hashlib
import json
import os
from datetime import datetime, timezone
from pathlib import Path
from playwright.sync_api import sync_playwright
USER = os.environ["NETDASH_USERNAME"]
PASS = os.environ["NETDASH_PASSWORD"]
case_id = "case-0142"
market = "DE"
listing_url = "https://marketplace.example/listing/123456" # a public listing page
search_query, result_position = "yourbrand wireless headphones", 7
sid = hashlib.sha256(f"{case_id}:{market}".encode()).hexdigest()[:8]
out = Path("evidence")
out.mkdir(exist_ok=True)
name = f"{case_id}-{market}"
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://scale-eu.netdash.io:2000",
"username": f"{USER}-cc-{market}-session-{sid}-ttl-30",
"password": PASS,
})
try:
page = browser.new_page()
response = page.goto(listing_url, timeout=60_000)
html = page.content().encode("utf-8")
page_title = page.title()
page.screenshot(path=str(out / f"{name}.png"), full_page=True)
finally:
browser.close()
(out / f"{name}.html").write_bytes(html)
record = {
"case_id": case_id,
"url": listing_url,
"status": response.status if response else None,
"page_title": page_title, # add title, price and seller fields with selectors per site
"captured_at": datetime.now(timezone.utc).isoformat(),
"exit_country": market,
"plan": "scale",
"session": sid,
"search_query": search_query,
"result_position": result_position,
"screenshot": f"{name}.png",
"html_sha256": hashlib.sha256(html).hexdigest(),
}
(out / f"{name}.json").write_text(json.dumps(record, indent=2))Which product to search with
Residential proxies
Self-serveCountry-specific search and listing pages, sticky per search session so pagination stays consistent. The examples use the Scale plan.
From $1.20/GB, graduated per order
Mobile proxies
Self-serveListings as shown on the mobile web, from mobile exit IPs. Carrier, city and network generation can’t be selected.
From $3.50/GB, graduated per order
Public pages, personal data and takedowns
Monitor public pages only, and don’t log in to marketplaces without authorization. Seller details on a listing can be personal data when the seller is an individual: collect only what your case needs and have a lawful basis for it. Respect each site’s terms and robots.txt, keep request rates modest, and file takedowns through each marketplace’s rights-owner process. This page is not legal advice. See how we expect netdash to be used.
Brand protection questions
No. netdash provides proxy connectivity. Takedowns go through each marketplace’s rights-owner reporting process.
Seller details can be personal data when the seller is an individual. Collect only what your case needs, with a lawful basis for it.
Yes, as long as the listing is public in that country. Set the exit country with its ISO code in the username. Targeting is country-level.
Store the URL, UTC time, exit country, session ID, a screenshot and a hash of the page with every capture, as in the evidence record above. Similar checks for your own ads are on ad verification.
Not without authorization from the marketplace. Keep to public pages.
Start monitoring your brand
Choose one market and one product line, capture the first suspect listings, and set your review cadence from there.