Skip to content

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:2000

Residential exit IPs in Germany

Your clientGateway -eu
Your clientGateway -eu
Sticky session: requests from your client go through the -eu gateway to one exit IP for 30 min, while that IP stays available.

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

  1. Step 1: Define what to look for

    Brand terms, product names and identifiers such as GTINs, logo images, and your list of authorized sellers.

  2. Step 2: Pick markets and sites

    The public marketplaces and sites that matter in each country.

  3. Step 3: Search per market

    Exit country = market, with one sticky session (30) per search so result pages stay consistent.

    Sticky sessions
  4. Step 4: Capture evidence

    The record in the table below, for every suspect listing.

  5. Step 5: Triage

    Match against authorized sellers and genuine product data. A person reviews before any action.

  6. 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

An evidence record you can reproduce
AttributePurpose
Listing URLIdentifies the listing for the report and the re-check
Title and price as shownWhat a shopper in that market saw
Seller display nameMatches against your authorized sellers. Business sellers; see the note on personal data below
UTC capture timeListings change; the time makes captures comparable
Exit country, plan and session IDShows the market, and lets you repeat the capture
Full-page screenshotWhat the page displayed, for human review and the report
SHA-256 of the page HTMLShows that the stored HTML hasn’t changed since capture
Search query and result positionHow 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:2000

Europe gateway, paired with European exit countries.

Exit country

-cc-DE, repeated per market

The storefront you investigate. Use GB for the United Kingdom, not UK.

Session mode and TTL

Sticky, 30 minutes per search session

Pagination 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-30

The 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 AshburnFrankfurt gateway to an exit IP in Via Ashburn (-us)United StatesCanadaMexicoBrazilArgentinaChileVia Frankfurt (-eu)United KingdomGermanyFranceSouth AfricaIndiaJapan, rotatingsticky for 15 minsticky for 30 minsticky for 12 hsticky for 7 days, on the SolveScaleOpus plan.

Proxy URL

http://USERNAME-cc-DE-session-a1b2c3d4-ttl-30:PASSWORD@scale-eu.netdash.io:2000

Replace 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();
{"ip":"203.0.113.10"}

Your output shows a different address in the country you chose.

Illustrative routes, not live traffic. Exits are available in most countries; the countries shown are examples. For exits in Oceania, ask support which gateway to use.All locations

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))
Python

Which product to search with

  • Residential proxies

    Self-serve

    Country-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-serve

    Listings 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.

Privacy choices

We use cookies and similar technologies that this site needs to work and to remember your choice. We also use Google Analytics to understand which pages and features people use: in the EEA, the UK and Switzerland only with your consent. Live chat loads only if you open it. You can change your choice at any time under “Privacy choices” in the footer. Privacy Policy

Privacy choices

Choose what netdash.io may use. You can change this at any time under “Privacy choices” in the footer.

Necessary (always on)

Keeps the site working and secure, and remembers your privacy choices (nd_consent, 12 months).

In the EEA, the UK and Switzerland it stays off until you switch it on; elsewhere it is on unless you switch it off here. Google Analytics 4 measures page views, clicks on links and buttons, use of the price calculator, connection builder and code examples, scroll depth, file downloads, and page-performance metrics. It sets the cookies _ga and _ga_96MPNM6GHH, which last up to 12 months. Google processes this data, which may involve transfer to the United States. We do not send your name, email address or account details to Google Analytics. With this switched on we also remember a referral code or campaign you arrived with (nd_attr, 30 days), so a partner can be credited if you sign up.

Support chat (loads only when you open it)

Our live chat is provided by LiveChat. It loads only when you open the chat window. LiveChat then sets its own cookies and processes the messages you send and technical data about your browser.