proxyfarms
Sign inStart farming

A hostname, a port,
and the code you have.

Proxy Farms speaks SOCKS5 and HTTP, so most stacks need a configuration line rather than an integration project. Rotation is a REST call on top of that, and inbound messages come to you as webhooks.

Point your client at it.

Each proxy gives you one host and two ports: SOCKS5 on the base port, HTTP on the next one up. Authentication is a username and a password.

There is no SDK to install, no agent to run beside your workers and no library version to track. If your client accepts a proxy URL, it is already compatible.

# SOCKS5 on the base port
curl --proxy socks5h://farm:secret@cow.proxyfarms.com:10482 https://example.com
# HTTP on the next port up, same credentials
curl --proxy http://farm:secret@cow.proxyfarms.com:10483 https://example.com

Anything that speaks the protocol.

These are not partnerships and none of them need a plugin from us. They are listed because each one can be handed a proxy URL, which is the entire requirement.

Command line and libraries
curlwgetPython requestshttpxNode undiciaxiosGo net/httpOkHttpGuzzle
Scraping and browsers
ScrapyPlaywrightPuppeteerSeleniumChromiumFirefox
Testing and inspection
PostmanInsomniaAppiumk6mitmproxy

The REST surface

Rotation is the call people automate, so it is the one we opened first. Keys are issued per account, and every response — including every refusal — is JSON.

Rotate a device

One call, keyed by the pairing id shown on the phone. The endpoint stays where it is — only the address behind it changes.

GET /v1/devices/{pairingId}/rotate

Keys you issue and revoke

Create a key in the dashboard and it is shown once. Revoke it there too, and the next call with it is refused.

Authorization: Bearer pfk_...

Refusals you can branch on

Every failure carries a stable code and a sentence fit to show a person, so your worker never has to read prose to find out what happened.

409 device_offline409 egress_on_wifi403 plan_required

Events come to you

A text can land at any second, so polling an inbox for one is mostly wasted requests. Register a URL against a device and the message comes to you instead.

You register a URL

One HTTPS endpoint per device, set on the Messages tab in the dashboard. We will not post to plain http or to a private address.

A message arrives

A text lands on that phone’s SIM — a verification code, a balance reply, anything the carrier delivers.

We post it, signed

A JSON body over HTTPS carrying the device it came from and the time it landed, with an HMAC signature over the timestamp and the body so you can tell it came from us.

We retry if you do not

Anything other than a 2xx is retried twice more, five seconds later and twenty. The last delivery and its result sit against the device in the dashboard, and twenty failures in a row switch the endpoint off.

POST https://your-app.example.com/hooks/proxyfarms
X-ProxyFarms-Event: sms.received
X-ProxyFarms-Signature: sha256=8f4c...
{
"event": "sms.received",
"id": "9f0c14a2-6b3d-4f18-9a77-2c5f0e8b1d43",
"device": "ZB56HTJ4",
"device_name": "Barn phone",
"from": "+14155550142",
"text": "Your code is 481902",
"received_at": "2026-04-11T09:31:07.412Z"
}

Delivery fires the moment the phone hands the message up, and the same message is never posted twice — a retried sync forwards nothing you have already been sent.

The phone answers too

The phone that carries the IP also carries a number, and anything that arrives on it can be read where you work — in the dashboard, or in your own code.

Verification codes, forwarded

Point the webhook at the worker that is waiting for the code and it arrives in your process, not on a screen somebody has to read. The message lands on the SIM in the same phone the request went out on, so the number and the exit IP belong to each other.

Read the inbox

Every message the device has received, in the dashboard, filtered by folder and searchable by sender.

Send from the device

Write a message in the dashboard and the phone sends it over the carrier, not through a third party gateway.

Signed, so you can trust it

Every delivery carries an HMAC over the timestamp and the body. Check it against the secret on the device and a forged post gets nowhere.

The number is yours

It belongs to the SIM you put in the phone. Move the SIM and the number moves with it.

Webhook forwarding comes with the Farm Plan. The Grower Plan reads and sends from the dashboard.

There is nothing to install.

No SDK, no sidecar, no plugin that has to keep pace with our releases. The whole surface is a hostname, a port pair, a credential and an API key. Swap the proxy URL in your configuration and the rest of your stack never learns that anything changed.

See what the fleet can do

Change one line and run it.

Free 7-day Farm Plan trial, no credit card. Pair a phone, copy the endpoint, point your client at it.

Start farming Talk to sales