Spaw vs Twilio Lookup
Twilio Lookup is a phone number API sold as separately priced data packages on top of a Twilio account: formatting and validation are free, and line type, caller identity, line status and the risk packages are each priced on their own, per request (the SMS Pumping Risk Score is free for North American numbers) or through sales for SIM swap and call forwarding.
The table uses Twilio Lookup's public pricing and documentation pages as checked on 2026-09-27, and Spaw's own pricing page. A row those pages carry no value for is marked "not on the pages read" rather than guessed at, and that is a statement about the reading and not about what Twilio Lookup publishes.
| spaw | twilio lookup | |
|---|---|---|
| Pricing model | Pay-as-you-go credit packs whose credits never expire, or optional plans, billed monthly or yearly, that deposit the same credits every month for less and roll unused plan credits over up to three months' allowance; both through Stripe Checkout | Per request, priced per data package on a Twilio account ("Pricing current as of August 2026"); line status and reassigned number risk are tiered by query volume, and SIM swap and call forwarding are contact sales |
| Free tier | 100 free credits every month, no card required | Formatting and validation are listed as Free, and so is the SMS Pumping Risk Score for North American numbers; no free allowance is published for the other packages |
| Price per 1,000 at about 10k | $7.80 (Growth pack: 5,000 credits for $39), or $5.80 on the Growth monthly plan (5,000 credits for $29 a month) | $8.00 per 1,000 for line type intelligence ($0.008 per request), $10.00 for inbound caller identification ($0.01, US only), $100.00 for identity match ($0.1, which the page says varies by country) |
| Price per 1,000 at about 100k | $4.49 (Volume pack: 100,000 credits for $449), or $3.49 on the Volume monthly plan (100,000 credits for $349 a month) | The same rates: line type intelligence carries no published volume tier. Line status is tiered from $0.007 per query (0 to 100k) down to $0.00385 (over 10M), and reassigned number risk from $0.02 (0 to 1,000) down to $0.0015 (6M+). |
| Numbers the vendor could not settle billed | A valid number costs 1 credit whatever its flags say. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged. | not on the pages read |
| Invalid numbers billed | No: invalid numbers are free, including a number in a block the regulator lists as unassigned, and so are repeats within 7 days | not on the pages read |
| Line type source | The numbering plan metadata everywhere except the North American plan, where mobiles and landlines share blocks and the plan can only say fixed_line_or_mobile; there the regulator's block holder settles it — a wireless carrier's block is mobile, a virtual-number wholesaler's is voip. line_type_source names which of the two answered. | Not stated beyond Canada, where the docs require approved access to Canadian Number Portability Administration Center (NPAC) data. The line type intelligence documentation lists twelve types (landline, mobile, fixedVoip, nonFixedVoip, personal, tollFree, premium, sharedCost, uan, voicemail, pager, unknown) and returns carrier_name with mobile_country_code and mobile_network_code, but does not say which data settles them elsewhere. |
| Numbering plan coverage | libphonenumber metadata for every region it carries, plus the regulators' own allocation tables, each named in the answer with the date of the copy it read. Complete tables, where a geographic number in a block the table leaves out answers unassigned_block: NANPA for the United States (with Puerto Rico, the U.S. Virgin Islands, Guam, American Samoa and the Northern Mariana Islands), the CNAC for Canada, ARCEP for France (with Guadeloupe, St. Barthélemy, St. Martin, Martinique, French Guiana, Réunion, Mayotte and St. Pierre & Miquelon), ACM for the Netherlands and the CRT (formerly the IFT) for Mexico. Partial tables, answered only from the ranges they list (a range listed as free, spare or held in reserve answers unassigned_block), so block_status answers null for a number outside them: Ofcom for the United Kingdom (with Guernsey, Jersey and the Isle of Man), ACMA for Australia, the NAD for New Zealand, UKE for Poland and MIMIT for Italy. Re-synced weekly, NANPA daily; /status lists each table's age. Outside those regions, block_status and is_virtual answer null rather than a guess. | "Line Type Intelligence is available for phone numbers worldwide"; Canadian numbers need special approval for Canadian Number Portability Administration Center (NPAC) data and answer error 60601 without it. Carrier data is documented as unavailable for the personal, tollFree, premium, sharedCost, uan, voicemail, pager and unknown types. |
| Live network check | Reserved behind hlr: true: 4 credits on top of the base credit, only where the network answers, reported in its own reachable, ported, current_carrier and roaming fields. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged. | Sold as its own package: line status, which checks whether a number is "active or reachable on its carrier network", tiered from $0.007 per query. Call forwarding (UK only) and SIM swap are listed as contact sales rather than priced. |
| Ported numbers | None from the tables, and the docs say so: carrier and line_type describe the block the number was allocated in, never a later port. Only a live carrier-network check can say who serves a number today. | not on the pages read |
| SMS pumping controls | Flags in the risk score, and an SMS policy that turns them into ok_to_send and blocked_by: a fraud and deliverability decision, not consent and not a do-not-call scrub. allowed_countries limits sending to the regions you serve; it is empty (any country) until you set it. range_burst (+40) flags a number once your account has looked up 5 distinct numbers in its 1,000-number range within 60 minutes, and numbers_per_client (+30) once one client address (the client_ip you send, or a browser visitor's own) has tried 5 within 60 minutes, unless Spaw's own IP data places it on a mobile carrier or a corporate proxy, or it is private or reserved. Both count only your own single and browser lookups, so a new account has no history. The range is a heuristic, and in North America a burst more likely means someone testing numbers against a form; the client count does not stop an attack rotated through residential proxies. disposable (+70) flags a number SMS-receiving websites publish and disposable_stale (+40) an old listing; disposable_range (+30) flags an unlisted number in a 1,000-number range holding 10 or more fresh listings. The lists are public and synced daily. The default policy blocks the fictional, disposable, reported_abuse, reported_abuse_widely and premium_rate signals and a risk_score above 60, so neither traffic signal blocks on its own. | Sold as its own package, the SMS Pumping Risk Score: $0.025 per request outside North America and free within it. The docs describe a 0 to 100 score from "a proprietary risk model built from Twilio's network data", specific to the Twilio account, returned with a carrier risk category and whether Verify Fraud Guard, part of Twilio's Verify product, has blocked the number. The docs do not recommend it for US or Canadian numbers. |
| Bulk limit | 100,000 numbers per bulk job, with an HMAC-signed completion webhook | not on the pages read |
| Batch API | 1,000 numbers per synchronous request, answered in input order | not on the pages read |
| Rate limit | 50 requests per second per key on the phone endpoints | not on the pages read |
| Official SDKs | Python, Node.js, PHP | C# / .NET, Java, Node.js, PHP, Python, Ruby, Go |
| Data retention | No history row and no log line carrying the number. What a lookup leaves is keyed and never holds the number: the 7-day marker that makes a repeat free (a second one when the account paid for a live check); for single and browser lookups, a truncated keyed hash of the number filed under keyed hashes of its range and client address for 60 minutes, and the account's lookups per country and hour as counts for 30 days; and a live check's answer, held for a day under a hash of the number. The number itself is kept only in the account's own outcome reports, phone suppression list and monitors. Bulk input lists and result files are deleted with the job after 30 days. | not on the pages read |
checked 2026-09-27 · sources: Twilio Lookup pricing, Twilio Lookup product page, Twilio Lookup line type intelligence docs, Twilio Lookup SMS Pumping Risk Score docs, Twilio server-side SDKs
When Twilio Lookup fits better
Teams already sending messages through Twilio that want line type, caller identity and SMS-pumping risk billed on the same account as their traffic.
- Formatting and validation are free; every other signal is a package priced on its own, per request or through sales
- Line type intelligence returns carrier_name, mobile_country_code and mobile_network_code alongside twelve line types
- SMS pumping risk score is $0.025 per request outside North America and free within it
- Seven official server-side SDKs
When Spaw fits better
Developers who want the numbering plan and the regulators' own allocation tables read for them, the dataset behind every field named in the answer, and an SMS policy that turns the evidence into ok_to_send and blocked_by — a fraud and deliverability decision, not consent and not a do-not-call scrub. Every answer is made on the server: the opt-in live carrier-network check, the one call that would send a number to a partner, is not enabled on the service.
- Twilio prices each signal as its own package; Spaw answers line type, carrier, block status and the fictional, virtual and disposable flags in one 1-credit lookup
- Twilio's pages name no source for its line type data beyond NPAC access for Canadian numbers; on every valid answer Spaw's line_type_source says whether the numbering plan or, for a North American number, the block holder in the regulator's table settled it, and every answer's sources block names each dataset it consulted with its version or sync date
- The Twilio pages read give no bulk or batch limit for Lookup; Spaw takes 1,000 numbers per batch request and 100,000 per bulk job
- Twilio ships seven server-side SDKs to Spaw's three plus an MCP server
- Twilio sells inbound caller identification ($0.01 a request, US only); Spaw returns no owner, subscriber or caller name by design and does no reverse lookup
- Twilio sells SMS pumping risk as its own package; Spaw's range_burst, numbers_per_client and disposable_range signals and the account's SMS policy (ok_to_send, blocked_by and an allowed_countries allow-list), a fraud and deliverability decision rather than consent or a do-not-call scrub, come in the same 1-credit lookup, counted from your own account's lookups and public lists of SMS-receiving numbers rather than from a network's traffic model
Questions
Does Spaw charge for numbers it cannot settle?
Spaw bills per answer. A number the numbering plan and, where one is installed, the regulator's own table agree is assignable costs 1 credit whatever its flags say. An invalid number is free — including one in a block the regulator lists as unassigned — and so is a repeat of the same number within seven days. The live carrier-network check (hlr: true) is not enabled on the service: hlr_checked answers false and nothing extra is charged. Twilio Lookup does not publish how it bills them.
Can I move a list of numbers from Twilio Lookup to Spaw?
Yes. Upload the CSV in the dashboard or POST it to the bulk endpoint, up to 100,000 numbers a job; Spaw keeps your columns, adds the answer columns, and lets you download the whole file or only the valid, invalid, low, medium or high-risk rows. A country column gives each row its own region, so a mixed international list needs no splitting.
Is there a free tier?
Every Spaw account receives 100 free credits at the start of each month with no card on file, and unused free credits accumulate. Twilio Lookup offers: Formatting and validation are listed as Free, and so is the SMS Pumping Risk Score for North American numbers; no free allowance is published for the other packages.
Try Spaw on your own list
Free credits every month, no card. Upload a list, keep your columns, and download only the rows you want. See the pricing page for every rule, or the Twilio Lookup alternatives.
Twilio Lookup is a trademark of its owner. Spaw is not affiliated with it. Markdown version: /compare/twilio-lookup.md