> ## Documentation Index
> Fetch the complete documentation index at: https://docs.2extract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Price Monitoring

> Track prices across regions and marketplaces, with an agent that sets up the geo-targeted proxies for each market.

Prices differ by country, and marketplaces show you the ones for wherever they think you are. Checking a competitor's German pricing from a US IP gives you the US answer.

This is the case the MCP server handles best, because the hard part - working out which country codes exist and how to encode them - is exactly what the agent is good at.

***

## The setup

> Collect gaming-laptop prices from Amazon in Germany, the UK and Japan.

```text icon="terminal" theme={null}
listGeoCountries      ⌐ DE · GB · JP
listProxyPlans        ⌐ Pay-As-You-Go · residential
getAccountBalance     ⌐ $149.95 available

createProxyResource   ⌐ amazon_gaming_laptops
                        "Price tracking for gaming laptops on Amazon DE, GB and JP"
setProxyLimits        ⌐ 50 GB per month

DE  2xt-customer-K3nP7qLm2Xv-proxy-amazon_gaming_laptops-country-de:s7Kd92mQ@proxy.2extract.net:5555
GB  2xt-customer-K3nP7qLm2Xv-proxy-amazon_gaming_laptops-country-gb:s7Kd92mQ@proxy.2extract.net:5555
JP  2xt-customer-K3nP7qLm2Xv-proxy-amazon_gaming_laptops-country-jp:s7Kd92mQ@proxy.2extract.net:5555
```

**One proxy, three markets.** The country lives in the username, so adding a fourth market later costs nothing - the agent just hands you another string.

***

## Wiring it into a scheduled job

```python monitor.py icon="python" theme={null}
import requests

BASE = "2xt-customer-K3nP7qLm2Xv-proxy-amazon_gaming_laptops"
PASSWORD = "s7Kd92mQ"
HOST = "proxy.2extract.net:5555"

MARKETS = {
    "de": "https://www.amazon.de/s?k=gaming+laptop",
    "gb": "https://www.amazon.co.uk/s?k=gaming+laptop",
    "jp": "https://www.amazon.co.jp/s?k=gaming+laptop",
}

def fetch(country: str, url: str) -> str:
    proxy = f"http://{BASE}-country-{country}:{PASSWORD}@{HOST}"
    r = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30)
    r.raise_for_status()
    return r.text

for country, url in MARKETS.items():
    html = fetch(country, url)
    # parse and store
```

Adding a market is one line in `MARKETS` - see the [country list](/data/countries) for available codes.

***

## Going below country level

National pricing is often the same everywhere; delivery estimates, stock, and local promotions are not. Narrow down when that matters:

> I need the same check from Munich specifically.

```text icon="terminal" theme={null}
searchGeoCities  country_code: "DE", search: "Munich"
  ⌐ Munich · munich

...-proxy-amazon_gaming_laptops-country-de-city-munich:...
```

City targeting needs the country in the same username. Region and ZIP work the same way - see [Geo Targeting](/proxy-products/configuration/geo-targeting).

***

## Sessions: usually not what you want

Price checks are independent requests, so let each one take a fresh IP. That is the default with no `session` parameter, and it spreads the load naturally.

Use a session only for flows that break when the IP changes - adding to a cart to reveal a discounted price, or paginating through a result set that keeps server-side state. Then hold it briefly:

```
...-country-de-session-cart_check-time-5:...
```

***

## Keeping the bill flat

Monitoring runs on a schedule, so cost is a rate, not a one-off. Two habits keep it predictable.

**A cap that matches the schedule.** Four runs a day at \~120 MB each is roughly 15 GB a month. Set the ceiling a little above that:

> Cap the Amazon proxy at 20 GB a month.

If the site changes and pages get heavier, you hit the cap and the proxy stops - rather than quietly tripling the bill.

**A monthly review.** Ask, or run the `/monthly-cost-report` prompt:

> Show traffic and spend for the price-monitoring proxies last month.

<Tip>
  Fetching only the search result page rather than every product page is usually the difference between 15 GB and 150 GB a month. Bandwidth is what you pay for.
</Tip>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Geo Verification" icon="location-dot" href="/ai/use-cases/geo-verification">
    Checking how a site renders in a given market.
  </Card>

  <Card title="Provisioning & Cost Control" icon="gauge" href="/ai/use-cases/provisioning-cost-control">
    Budgets, caps, and cleaning up what you stopped using.
  </Card>
</CardGroup>
