Building AI agents that need Google accounts? You've hit "This number cannot be used" — Google's most aggressive VoIP block. Here's the technical breakdown and the fix.
How Google Detects VoIP Numbers
Google runs the most sophisticated phone verification in the industry, layering multiple checks:
1. Real-time HLR Queries
Google queries the Home Location Register of the number's carrier. Real mobile numbers return active network registration. VoIP numbers either fail HLR entirely or return internet-based routing.
2. LERG Database Lookup
The Local Exchange Routing Guide maps every North American number to its carrier. Google cross-references this — if your number belongs to Twilio, Bandwidth, or any VoIP provider, it's rejected before the SMS is even queued.
3. Behavioral Analysis
Google tracks creation patterns: how many accounts were created from this number, geographic consistency between the number's area code and the IP address, and timing patterns that suggest automation.
Why Every VoIP Provider Fails
| Provider | Google's detection | Result |
|---|---|---|
| Twilio | Carrier: "Twilio Inc", line_type: "voip" | ❌ Blocked |
| Google Voice | Carrier: "Google Voice", line_type: "voip" | ❌ Blocked (ironic) |
| Vonage | Carrier: "Vonage", line_type: "voip" | ❌ Blocked |
| TextNow | Carrier: "TextNow", line_type: "voip" | ❌ Blocked |
| AgentSIM | Carrier: "T-Mobile", line_type: "mobile" | ✅ Passes |
Even Google's own Voice product fails Google's verification — the system doesn't make exceptions.
The Fix: AgentSIM Real SIM Numbers
AgentSIM provisions actual SIM-backed numbers on carriers like T-Mobile. They pass HLR queries because they ARE on the mobile network.
Install
pip install agentsim-sdk playwright
playwright install chromium
Google Account Verification
import agentsim
from playwright.async_api import async_playwright
import asyncio
agentsim.configure(api_key="asm_live_xxx")
async def verify_google_account():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://accounts.google.com/signup")
# Fill registration form...
await page.fill('[name="firstName"]', "Agent")
await page.fill('[name="lastName"]', "Smith")
# Phone verification step
async with agentsim.provision(
agent_id="google-signup",
country="US"
) as num:
print(f"Using: {num.number}") # Real T-Mobile number
await page.fill('[name="phoneNumberId"]', num.number)
await page.click("#phoneNumberNext")
# Wait for Google's SMS on real SIM
otp = await num.wait_for_otp(timeout=120)
print(f"Google code: {otp.otp_code}")
await page.fill('[name="code"]', otp.otp_code)
await page.click("#codeNext")
# Number auto-released
print("Google account verified!")
await browser.close()
asyncio.run(verify_google_account())
With MCP (Claude Code / Cursor)
{
"mcpServers": {
"agentsim": {
"url": "https://mcp.agentsim.dev/mcp",
"headers": {
"Authorization": "Bearer asm_live_xxx"
}
}
}
}
Your AI coding agent calls provision_number → enters it on Google → calls wait_for_otp → enters the code.
Carrier Lookup Comparison
// AgentSIM number:
{
"number": "+12345678901",
"carrier": "T-Mobile USA",
"line_type": "mobile",
"hlr_status": "active"
}
// Twilio number:
{
"number": "+19876543210",
"carrier": "Twilio Inc",
"line_type": "voip",
"hlr_status": "unreachable"
}
Success Rates
| Provider | Google success rate | Cost |
|---|---|---|
| Twilio | 0% | $1.15/number |
| Google Voice | 0% | Free (ToS risk) |
| AgentSIM | 98% | $0.99/session |
The 2% failure rate comes from Google's behavioral analysis — not carrier detection. Using realistic delays and varying browser fingerprints brings this close to 100%.
Best Practices
- Rate limit: Max 1 account per hour, 3 per day per IP
- Realistic delays: Random 1-5 second pauses between form fields
- Proxy rotation: Different IP for each account
- Account warmup: Login and browse normally after creation
Get Started
- Try it: agentsim.dev
- Docs: docs.agentsim.dev
- GitHub: github.com/agentsimdev
10 free sessions per month. Stop fighting Google's VoIP detection.
Top comments (0)