Aug 27, 2026-Reviews
2extract Review - Residential Proxies Your Agent Can Drive

2extract Review - Residential Proxies Your Agent Can Drive

We've tested 2extract, a developer-first residential and mobile proxy network with an MCP server that lets an AI agent create and manage proxies for you.

Welcome to this 2extract review ✨

Here is a problem every product team eventually runs into: you cannot see your own product the way a stranger in another country sees it. Your pricing page localises. Your ads target. Your CDN serves a different variant. And when a customer in São Paulo emails to say the price on the page is wrong, you open the same URL, see the right price, and have nothing to go on.

Residential proxies are the boring infrastructure that solves this. They route your request through a real consumer connection in the market you care about, so the site you are checking treats you like a local. Same tool, same reason, whether you are doing geo QA, price monitoring, ad verification, or collecting public web data at scale. This is not a consumer VPN and it is not a way around a site's security. It is a way to ask "what does this page actually show in Germany?" and get a truthful answer.

2extract is a developer-first take on that. The founder asked me to look at four things in particular: the MCP server that lets an AI client create and manage proxies through plain language, geographic targeting and session control, the API and dashboard workflow, and the pay-as-you-go pricing. So I made proxies, wired one into an AI client, and ran real traffic through the network from a terminal for an afternoon. Everything below is from that session.

The 2extract home page, with a ticker across the top announcing that the pool is agent-ready and the MCP server is live.
The 2extract home page, with a ticker across the top announcing that the pool is agent-ready and the MCP server is live.

Getting Started & First Impressions

The setup is short enough to describe in a sentence. You land on a dashboard with a four-step "Getting Started" checklist, top up a balance, and create a proxy. The creation form is a single page: name, description, residential or mobile, plan, and a default country. That is it.

Two details from that form are worth knowing before you fill it in. The proxy name becomes part of your connection username and cannot be changed later, so pick something you will still recognise in six months (the field pre-fills a different random name each time you open it, quantum_grid and then nimble_signal for me). And the plan choice is also permanent, which matters less than it sounds because pay-as-you-go is currently the only plan you can actually pick.

The Create New Proxy form: a pre-filled random name, residential or mobile, and a plan grid where everything except Pay-As-You-Go is marked Coming Soon.
The Create New Proxy form: a pre-filled random name, residential or mobile, and a plan grid where everything except Pay-As-You-Go is marked Coming Soon.

Hitting create drops you straight onto the proxy page with a host, a port, a username, a password and a ready-to-paste cURL command. I copied it into a terminal and ran it unmodified. Three seconds later I had a Verizon FiOS address in New York City. One form and one pasted command, and no config file anywhere.

One warning about the dashboard itself: the list pages sat on skeleton loaders for ten to fifteen seconds more than once during my session, which reads oddly next to the marketing site's promise of a zero-lag dashboard. Everything arrives, it just takes its time.

Geographic Targeting Lives in the Username

This is the design decision the whole product hangs off, and it is a good one. There is no SDK, no header to set, no per-country proxy to provision. The gateway host and port never change. Everything about a request's behaviour is encoded in the username you authenticate with:

2xt-customer-[CLIENT_ID]-proxy-[PROXY_NAME]-country-us-state-california-city-sanfrancisco

One proxy resource covers every market. Want Germany instead? Change -country-us to -country-de in the connection string and the next request exits in Germany. There is nothing to save, nothing to redeploy, and no second resource to pay for. For anyone who has managed a pool of country-specific endpoints, that alone is worth the switch.

The Integration tab in the dashboard is a builder for that string. You pick country, region, city and ZIP from searchable dropdowns, set the session behaviour underneath, and the cURL command at the bottom rewrites itself live as you click. Four quick presets (E-Commerce, Web Scraping, SMM & Accounts, Local SEO) fill the whole panel in one click. There is also an ASN targeting mode if you want to pin traffic to a specific network rather than a place, and the docs are clear that the two are mutually exclusive.

The Integration tab with United States, California and San Francisco selected, and the matching cURL command generated below it.
The Integration tab with United States, California and San Francisco selected, and the matching cURL command generated below it.

The catalogue behind those dropdowns is deep. The country list runs to 100 entries in the picker, and selecting California offered me 518 cities, from Acton to Yucca Valley. That is real granularity, not a marketing bullet.

How well does it land? I ran eleven requests pinned to San Francisco and checked each exit IP against a geolocation service. Six came back San Francisco. The other five were San Jose, Oakland and Pleasanton, all inside the Bay Area, none more than about 70 km off. City targeting gets you the right metro reliably and the right city most of the time. 2extract's own troubleshooting page is refreshingly straight about this: geolocation databases disagree with each other, and what matters is what the target site concludes, not what a lookup tool says. My ZIP test made the same point in miniature, returning an IP that one database placed in Yonkers and simultaneously tagged with a Manhattan postal code. If your work depends on street-level precision, verify against the site you actually care about rather than a third-party IP lookup.

Session Control: Rotating, Sticky, Or Locked

By default every request gets a new IP. I fired five requests with no session parameter and got five different addresses. That is what you want for broad collection and exactly what you do not want for a login flow or a paginated cart.

Adding -session-[id]-time-[minutes] pins the IP for the duration. I set a ten-minute sticky session and ran five requests: same address, five times out of five. The dashboard generates the random session id for you when you flip Session Type to Sticky, which is a small kindness.

The piece I liked most is the third mode. A sticky session can still lose its IP if that residential connection drops offline, and by default the gateway quietly hands you a different one. Add the -const flag, exposed in the UI as a Force Constant IP toggle, and it returns a 502 instead. Failing loudly is the correct behaviour when your script is halfway through a multi-step flow, and I have used proxy services that do not offer the choice at all.

The Local SEO preset combines all of this in one click: a US ZIP code, a fifteen-minute sticky session, and Force Constant IP on. I ran the resulting string three times and got the identical Charter Communications address in the New York metro every time.

One click on the Local SEO preset fills in ZIP 11368, a sticky 15-minute session and Force Constant IP, and appends -const to the username.
One click on the Local SEO preset fills in ZIP 11368, a sticky 15-minute session and Force Constant IP, and appends -const to the username.

Checking What A Market Actually Sees

This is the use case the founder suggested, so I ran it properly. I requested the exact same Spotify Premium URL four times, changing nothing but the country flag in the username. Each time the site redirected to its local page and quoted a local price:

CountryLanding pageIndividual plan
United States/us/premium/$12.99 / month
Germany/de/premium/12,99 € / Monat
Japan/jp/premium/¥1,080
Brazil/br-pt/premium/R$ 23,90

Four markets, one URL, one edited string. No VPN client, no browser profiles, no asking a colleague in another timezone to send a screenshot. If you sell internationally, this is the thing that turns "a customer says the price is wrong" from a shrug into a five-minute check, and it is equally the shape of a price monitoring or ad verification job.

The MCP Server

This was the founder's top priority and the reason the product is interesting beyond the commodity layer. 2extract ships an MCP server so an AI client can provision and manage proxies for you in plain language, and it is a real implementation rather than a thin wrapper.

You create an API key in the dashboard first. The key dialog is properly scoped: five permissions (proxies:read, proxies:write, geo:read, stats:read, balance:read) and an expiry ranging from 30 days to never. The same key authenticates both the MCP server and the REST API, though slightly annoyingly they want it in different headers.

The API key dialog: five scopes to tick individually, and an expiry that runs from 30 days to never.
The API key dialog: five scopes to tick individually, and an expiry that runs from 30 days to never.

Connecting it to Claude Code is one command from the docs. I did the interesting version instead and pointed a headless Claude Code run at the server with a single instruction: tell me my balance, list my proxies, then create a residential pay-as-you-go proxy called mcp_test_uneed defaulting to Germany. It came back with the balance to six decimal places, a table of my existing proxies, and a new active proxy. I checked the dashboard and there it was, correctly configured, sitting next to the one I had made by hand. I then ran three requests through it with no parameters at all and got three German consumer IPs, on Telefónica, Vodafone and wilhelm.tel.

Under the hood the server exposes 19 tools across account, geo, plans, proxy resources and proxy settings, plus 19 matching docs:// resources so the model can look up a response schema instead of guessing at it. It also ships a long set of server instructions telling the agent to resolve country and plan IDs before creating anything, to check the balance before a billable action, and to verify the final state afterwards. Whoever wrote that has clearly watched an LLM invent a country ID and has taken steps.

One rough edge: the API does not return a per-proxy connection username, so the agent could tell me the host and port but hedged on the username. It is trivially derivable (your account prefix, then -proxy-, then the name) and the dashboard shows it plainly, but an agent-first product should hand that back in the response.

The proxy list after testing: mcp_test_uneed, created by Claude Code through the MCP server, sitting next to the one I made by hand, with traffic and spend per proxy.
The proxy list after testing: mcp_test_uneed, created by Claude Code through the MCP server, sitting next to the one I made by hand, with traffic and spend per proxy.

The API, And Documentation Written For Machines

Everything the dashboard does is available over a REST API with a Swagger UI, and there is a second, keyless MCP server that serves the documentation itself as searchable tools.

The docs deserve a paragraph of their own. The llms.txt index is the best example of the format I have read from a small company. It opens with an "Instructions for agents" block that reads like a set of hard-won support tickets: proxy names take underscores because hyphens are the parameter separator, city alone does nothing without country, one proxy covers every country so do not create one per market, and if you find yourself writing a custom header to set a country you are doing it wrong. Troubleshooting is indexed by symptom rather than by subsystem. Every page is available as markdown by appending .md to its URL. There are 28 anti-detect browser guides and integration pages for Requests, Scrapy, Axios, Puppeteer, Playwright and Go.

Gateway errors are mostly good and occasionally not. A nonsense parameter returns a clean 400 with unknown parameter: 'banana'. Using -state- without -country- returns a 400 explaining the dependency. A wrong password returns a proper 407 saying so. But an invalid country value and a request for a country with no available IPs both fell through to a bare 500 carrying a numeric code with no message, and the header they arrive in is not the one the error reference documents. It is a small inconsistency, though it is exactly the sort of thing that costs someone an hour at 2am.

The Rest Of The Product

  • Mobile proxies alongside residential, targetable by carrier through an ISP catalogue
  • HTTP, HTTPS and SOCKS5, with the UI nudging you toward HTTPS so credentials are encrypted to the gateway. SOCKS5 worked first try
  • Per-proxy usage limits in GB or in dollars, per day or per month, with an alert at 80% of the cap
  • Access control by authorised and blocked IP, plus target host allow and block lists so a compromised key cannot be pointed anywhere you did not intend
  • Bulk credential generation: I asked for ten and got ten connection strings, each carrying my current targeting and its own session id, copyable or downloadable as .txt or .csv
  • Traffic statistics per proxy with CSV export
  • Ready-made snippets in the dashboard for cURL, Python, Node.js and Go
  • Live chat, a Discord community, a status page and a public feature request board in the sidebar

Pricing

Pay-as-you-go is the headline and, for now, the only option you can actually buy. Residential traffic is $3.99 per GB and mobile is $4.99 per GB, billed against a prepaid balance that every proxy draws from. Four monthly plans exist for each product type, but all eight are marked "Coming Soon" in the dashboard, so treat the figures below as a preview of where pricing is heading rather than something you can sign up for today.

PlanResidentialMobile
Pay-as-you-go$3.99 / GB$4.99 / GB
Micro$36.00 / mo (10 GB)$45.00 / mo (10 GB)
Starter$96.00 / mo (30 GB)$99.00 / mo (25 GB)
Production$279.00 / mo (100 GB)$349.00 / mo (100 GB)
Professional$999.00 / mo (500 GB)$1,047.00 / mo (350 GB)

The minimum top-up is $10, deposits never expire, and there is no subscription or commitment. You can pay by card through Stripe or in crypto through NOWPayments, and neither carries a processing fee. High-volume buyers are pointed at a Contact Sales form; the site advertises rates down to $0.70 per GB at that end, which is their figure and not one I could verify. There is also a coupon field in Billing if you are handed a code.

Metered pricing is easy to be nervous about, so here is a real number. My whole afternoon of testing, a few dozen requests including four full Spotify pages and a pile of JSON lookups, came to 1.28 MB across two proxies, which the dashboard billed at one cent. Text scraping is cheap. Anything that loads images will not be, which is what the per-proxy spending caps are for.

The Billing page: a prepaid balance every proxy draws from, a $10 minimum top-up, and card or crypto with no processing fee on either.
The Billing page: a prepaid balance every proxy draws from, a $10 minimum top-up, and card or crypto with no processing fee on either.

Who Should Use It

  • Product and QA teams who need to see their own site the way a user in another market sees it
  • Anyone building price monitoring, ad verification or SERP tracking where the exit location is the whole point
  • Developers who live in an AI client and would rather ask for a proxy in Frankfurt than fill in a form
  • Small teams and solo builders who want metered billing instead of a minimum monthly commitment
  • Scraping projects that have hit the wall with datacenter IPs

Who should skip it: if you want a consumer VPN, this is the wrong shape of product entirely. If your target is one of the genuinely hard sites, a residential IP is one input among several and the fingerprint and request rate matter at least as much, something 2extract's own troubleshooting page says out loud. And if you are running enormous, image-heavy collection jobs, do the arithmetic on per-GB billing before you start rather than after.

Conclusion

2extract is a proxy network built by people who evidently write code and read docs. The username-as-configuration model means one resource covers the world and switching markets is a string edit. Session control offers the three modes you actually need, including the loud-failure one most services skip. And the MCP server is not a checkbox: nineteen tools, per-tool documentation resources, scoped keys, and a set of server instructions that anticipates how models go wrong.

The obvious comparison set is Bright Data, Oxylabs and Decodo, and the honest positioning is that 2extract is smaller and less proven than any of them. What it offers instead is a shape those platforms mostly do not: no seat licences, no annual contract, a $10 floor, and a control surface an agent can drive. If you are a team of three rather than a data department of thirty, that trade is likely to go your way.

What I liked:

  • One proxy resource covers every country, because targeting lives in the username
  • 100 countries in the picker and 518 cities in California alone
  • Rotating, sticky and force-constant sessions, with -const failing loudly instead of silently swapping IPs
  • A genuine MCP server: 19 tools, 19 documentation resources, and server instructions that stop an agent guessing at IDs
  • Scoped API keys with real expiry options, plus per-proxy spend caps, IP whitelists and target host lists
  • Documentation clearly written for both humans and agents, with markdown versions of every page
  • Pay-as-you-go from a $10 balance, no subscription, no commitment, no processing fee on either payment method

Things to keep in mind:

  • City and ZIP targeting land in the right metro but not always the exact place
  • All eight monthly plans are still marked "Coming Soon", so pay-as-you-go is the only real choice today
  • Some gateway errors return a bare 500 with a numeric code, in a header the error reference does not document
  • The API does not return a proxy's connection username, which an agent-first product should
  • Dashboard list pages can sit on skeleton loaders for ten to fifteen seconds
  • Residential exits are slow by nature: a page that loads in 0.05 seconds directly took a median of 2.7 seconds through the network, and one request in my sample needed a retry
  • Pool size, country count and success rate are the vendor's own figures and not something a review can verify

If you have a market you cannot see into, or an agent you would like to hand infrastructure to, 2extract is worth the $10.

2extract
Discover 2extract product page on Uneed

Related Articles

SlidesPilot Review - From PDF to a PowerPoint You Can Actually Edit
Reviews

SlidesPilot Review - From PDF to a PowerPoint You Can Actually Edit

We've tested SlidesPilot, an AI presentation agent that turns PDFs, Word files, URLs and pasted text into PowerPoint decks that stay grounded in the source document.
Glean Review - The Enterprise AI Platform Built On Your Own Data
Reviews

Glean Review - The Enterprise AI Platform Built On Your Own Data

Glean has no trial and no self-serve signup, so we dug into what's public instead: connector specs, the agent library, and a rate card almost no enterprise vendor publishes.
Speechdub Review - Your Reading Pile, Finally Out Loud
Reviews

Speechdub Review - Your Reading Pile, Finally Out Loud

We've tested Speechdub, a document listening app that turns PDFs, web pages and pasted text into audio you can follow along with, rewrite, translate and question.
Instagram Transcript Generator Review - Every Word of a Reel, No Signup
Reviews

Instagram Transcript Generator Review - Every Word of a Reel, No Signup

We've tested the Instagram Transcript Generator, a free tool that turns any public Reel into a full text transcript without an account.