# Can my agent run 50 phones in parallel?

Create one phone per task with one call each, give each an idempotency key, run the agents side by side and park or delete every phone in finally. What 50 phones cost.

Guides3 min read

In this article

Yes: create one phone per task, each with its own create call, and run your agents side by side. Fifty Android phones running for ten minutes cost $5.00, billed per second, and every phone is its own device with its own apps, data and settings.

## Create them

Each phone is one `POST /v1/phones` (or one `create_phone` call over MCP). Give every create an `Idempotency-Key`, so a create retried after a lost response returns the same phone instead of a second one, and name the phones after the task they serve.

```
const API = 'https://mobilebox.dev/v1', auth = { authorization: `Bearer ${process.env.MOBILESANDBOX_API_KEY}` }
const tasks = Array.from({ length: 50 }, (_, i) => `checkout-${i}`)
const phones = await Promise.all(tasks.map((name) => fetch(`${API}/phones?wait=ready`, {
  method: 'POST', headers: { ...auth, 'content-type': 'application/json', 'idempotency-key': name }, body: JSON.stringify({ name }),
}).then((r) => r.json())))
try {
  await Promise.all(phones.map((phone, i) => runAgent(phone.id, tasks[i])))  // your agent, one phone each
} finally {
  await Promise.all(phones.map((phone) => fetch(`${API}/phones/${phone.id}`, { method: 'DELETE', headers: auth })))
}
```

`?wait=ready` returns each phone once it is ready to use; one still starting after 55 seconds comes back as `creating`, so poll `GET /v1/phones/{id}?wait=ready` before handing it over. Boot time is free; billing starts at ready.

## Keep the agents apart

Give each agent exactly one phone id and nothing else. An agent that only knows its own id can’t tap on its neighbour’s screen, and a failure in one run leaves the other 49 alone. Delete in `finally`, or park the phones you want to keep: a parked phone keeps its apps, data and logins and costs nothing. Use a [key per agent](https://mobilebox.dev/blog/android-api-key-security) when agents belong to different people or jobs.

## What 50 phones cost

| Phones | Running time | Cost |
| --- | --- | --- |
| 50 cloud Android | 10 minutes | $5.00 |
| 50 cloud Android | 1 hour | $30.00 |
| 50 iPhones | 10 minutes | $25.00 |
| 50 real Android devices | 10 minutes | $15.00 |

Every session bills per second with a one-minute minimum. A fleet that runs every day may be cheaper on dedicated devices, from $79 a month each, and past 100 devices there is volume pricing; see [pricing](https://mobilebox.dev/pricing).

## Common uses

- **Evaluations.** One fresh phone per episode, so no run inherits another’s state; see [evaluating Android agents](https://mobilebox.dev/blog/android-agent-evaluations).

- **Test matrices.** The same check across locales, cities or app builds, one phone each; see [locale, location and IP](https://mobilebox.dev/blog/locale-location-proxy).

- **Agents in production.** One kept phone per customer workflow, parked between runs.

## Try it in your agent in 60 seconds

Paste this into Claude Code, Cursor, Codex or any agent that can read a web page. It asks for your email, gets its own key at once and adds the phone tools; the 6-digit code from your inbox keeps the workspace.

```
Set up Mobilebox for me: read https://mobilebox.dev/setup.md?via=run-android-phones-in-parallel and follow it.
```

[What your agent reads](https://mobilebox.dev/setup.md?via=run-android-phones-in-parallel)

In this article

[All articles](https://mobilebox.dev/blog)

## Next questions

- [Mobilebox or BrowserStack?](https://mobilebox.dev/blog/mobilebox-vs-browserstack?via=next-browserstack)

- [Cloud phone or a local emulator?](https://mobilebox.dev/blog/mobilebox-vs-local-emulator?via=next-emulator)

- [Mobilebox, Limrun or Mobilerun?](https://mobilebox.dev/blog/mobilebox-vs-limrun?via=next-limrun)

- [How do I add it to Cursor, Codex or VS Code?](https://mobilebox.dev/blog/android-mcp-cursor-codex-vscode?via=next-setup)

- [Can my agent use an iPhone?](https://mobilebox.dev/ios?via=next-iphone)

- [Can each phone get a residential IP?](https://mobilebox.dev/blog/residential-ip-per-phone?via=next-residential-ip)

- [Does my agent stay logged in between runs?](https://mobilebox.dev/blog/park-resume-android?via=next-logins)

- [Can I watch my agent work live?](https://mobilebox.dev/live-view?via=next-live)
