{"api":"Cached phone validation","apiRows":{"Employee profile":2753,"Cached employee profile":1215,"Employee email":2108,"Cached employee email":710,"Email validation":3355,"Cached email validation":604,"Employee phone":706,"Cached employee phone":303,"Company profile":835,"Cached company profile":141,"Company headcount":114,"Cached company headcount":94,"Phone validation":495,"Cached phone validation":126,"Post comments":291,"Post reactions":266,"Employee lookalikes":207,"Company lookalikes":568,"Company technologies":114,"Cached company technologies":173,"Company job count":41,"Employee posts":273,"Cached employee posts":14,"Company posts":256,"Cached company posts":10,"Company funding":87,"Cached company funding":116,"Company jobs":143,"Employee search":741,"Cached employee search":199,"Company search":267,"Cached company search":161,"Job search":328,"Cached job search":17,"Reverse email lookup":313,"Cached reverse email lookup":258,"Post search":253,"Post details":308,"Job details":305,"Employee comments":170,"Employee reactions":142,"Post reposts":99,"Employee recommendations":66,"Job lookalikes":34,"Employee articles":47,"Company enrichment":357,"Cached company enrichment":889,"People search":491,"Cached people search":934,"Company discovery":278,"Cached company discovery":945,"Job postings":37,"Cached job postings":131,"Job posting details":64,"Person enrichment":167,"Leadership changes":11,"Cached leadership changes":59,"Company hierarchy":65},"treeCounts":{"Employee profile":{"best":84,"top":3},"Cached employee profile":{"best":62,"top":3},"Employee email":{"best":101,"top":3},"Cached employee email":{"best":38,"top":3},"Email validation":{"best":144,"top":3},"Cached email validation":{"best":27,"top":3},"Employee phone":{"best":54,"top":3},"Cached employee phone":{"best":24,"top":3},"Company profile":{"best":53,"top":3},"Cached company profile":{"best":12,"top":3},"Company headcount":{"best":13,"top":3},"Cached company headcount":{"best":7,"top":3},"Phone validation":{"best":36,"top":3},"Cached phone validation":{"best":13,"top":3},"Post comments":{"best":23,"top":3},"Post reactions":{"best":21,"top":3},"Employee lookalikes":{"best":11,"top":3},"Company lookalikes":{"best":30,"top":3},"Company technologies":{"best":18,"top":3},"Cached company technologies":{"best":17,"top":3},"Company job count":{"best":5,"top":3},"Employee posts":{"best":25,"top":3},"Cached employee posts":{"best":2,"top":2},"Company posts":{"best":24,"top":3},"Cached company posts":{"best":1,"top":1},"Company funding":{"best":14,"top":3},"Cached company funding":{"best":11,"top":3},"Company jobs":{"best":33,"top":3},"Employee search":{"best":33,"top":3},"Cached employee search":{"best":15,"top":3},"Company search":{"best":18,"top":3},"Cached company search":{"best":11,"top":3},"Job search":{"best":26,"top":3},"Cached job search":{"best":2,"top":2},"Reverse email lookup":{"best":22,"top":3},"Cached reverse email lookup":{"best":21,"top":3},"Post search":{"best":24,"top":3},"Post details":{"best":29,"top":3},"Job details":{"best":25,"top":3},"Employee comments":{"best":14,"top":3},"Employee reactions":{"best":11,"top":3},"Post reposts":{"best":8,"top":3},"Employee recommendations":{"best":6,"top":3},"Job lookalikes":{"best":3,"top":3},"Employee articles":{"best":5,"top":3},"Company enrichment":{"best":39,"top":3},"Cached company enrichment":{"best":51,"top":3},"People search":{"best":47,"top":3},"Cached people search":{"best":41,"top":3},"Company discovery":{"best":37,"top":3},"Cached company discovery":{"best":52,"top":3},"Job postings":{"best":9,"top":3},"Cached job postings":{"best":14,"top":3},"Job posting details":{"best":16,"top":3},"Person enrichment":{"best":20,"top":3},"Leadership changes":{"best":3,"top":3},"Cached leadership changes":{"best":3,"top":3},"Company hierarchy":{"best":7,"top":3}},"bestPages":{"Employee profile":["/best-linkedin-profile-api","Best LinkedIn profile API in 2026"],"Cached employee profile":["/best-cached-linkedin-profile-api","Best cached LinkedIn profile API in 2026"],"Employee email":["/best-email-finder-api","Best email finder API in 2026"],"Cached employee email":["/best-cached-email-finder-api","Best cached email finder API in 2026"],"Email validation":["/best-email-verification-api","Best email verification API in 2026"],"Cached email validation":["/best-cached-email-verification-api","Best cached email verification API in 2026"],"Employee phone":["/best-phone-finder-api","Best phone finder API in 2026"],"Company profile":["/best-linkedin-company-data-api","Best LinkedIn company data API in 2026"],"Cached company profile":["/best-cached-linkedin-company-data-api","Best cached LinkedIn company data API in 2026"],"Post comments":["/best-linkedin-post-comment-api","Best LinkedIn post comment API in 2026"],"Post reactions":["/best-linkedin-post-reaction-api","Best LinkedIn post reaction API in 2026"],"Employee posts":["/best-linkedin-person-post-api","Best LinkedIn person post API in 2026"],"Company posts":["/best-linkedin-company-post-api","Best LinkedIn company post API in 2026"],"Cached employee search":["/best-cached-linkedin-people-search-api","Best cached LinkedIn people search API in 2026"],"Company search":["/best-linkedin-company-search-api","Best LinkedIn company search API in 2026"],"Job search":["/best-linkedin-job-search-api","Best LinkedIn job search API in 2026"],"Cached reverse email lookup":["/best-cached-reverse-email-lookup-api","Best cached reverse email lookup API in 2026"],"Post search":["/best-linkedin-post-search-api","Best LinkedIn post search API in 2026"],"Post details":["/best-linkedin-post-details-api","Best LinkedIn post details API in 2026"],"Employee comments":["/best-linkedin-person-comment-api","Best LinkedIn person comment API in 2026"],"Employee reactions":["/best-linkedin-person-reaction-api","Best LinkedIn person reaction API in 2026"],"Cached company enrichment":["/best-cached-company-enrichment-api","Best cached company enrichment API in 2026"],"Cached people search":["/best-cached-people-search-api","Best cached people search API in 2026"],"Cached company discovery":["/best-cached-company-discovery-api","Best cached company discovery API in 2026"]},"first":[{"provider":"Abstract API","api":"Cached phone validation","website":"https://www.abstractapi.com","pricingPage":"https://www.abstractapi.com/pricing","pitch":"Check any phone number in real time. The Phone Validation API tells you if a number is real, which carrier and line type it uses, and where it's registered.","strengths":[],"aggregators":[{"aggregator":"Orthogonal","url":"https://orthogonal.com/discover/abstractapi","ownKey":null,"paid":true,"perThousand":5,"usd":0.005,"per":"call","resultsPerPage":null,"callStated":true}],"freshness":"1 day","fieldFreshness":null,"history":null,"keep":"no limit, but no collection, database or directory compiled from it without Abstract's written permission","use":"You may not access or use the Site for any purpose other than that for which we make the Site available. Without limiting the foregoing, you agree not to: [...] 3. Use the Site or the Content to advertise or offer to sell goods and services or to identify any household, street address, or individual. 4. License, sell, resell, lease, distribute, or otherwise commercially exploit as a standalone product, or make available to any third party, the Site, or any Content not owned by you (unless the Content is expressly licensed to you for such purpose). [...] 13. Use the Site or the Content to spam, phish, pharm, pretext, spider, crawl, or scrape. [...] 17. Use the Site or the Content for any illegal or unauthorized purpose. 18. Use the Site or the Content: for any form of debt collection; as the sole source of data for hard background check purposes; to determine eligibility for a government license or benefit; for any purpose prohibited by applicable data privacy and security laws; for the benefit of any one political candidate, political party, political campaign, or political advocacy group affiliated exclusively with or formed to benefit any one of the foregoing; [...] in connection with any purpose covered by the Fair Credit Reporting Act (15 U.S.C. Sec. 1681 et seq (“FCRA”)) [...]; for the preparation of a Consumer Report or in such a manner that may cause such data to be characterized as a Consumer Report; in connection with establishing a consumer’s eligibility for credit or insurance to be used primarily for personal, family, or household purposes [...]; for the purpose of evaluating a consumer for employment, promotion, reassignment, or retention as an employee; for any tenancy verification or in connection with any application to rent real property; [...] for any other purpose under the FCRA.","plan":"Starter, 5,000 requests / month","who":"anyone 18 or older","billing":"monthly","charged":null,"topUp":null,"pay":19,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":5000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":5000,"monthlyCap":null,"perThousand":3.8,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":3.8,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":"never","alsoPaysFor":[],"sharesBudgetWith":[],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":3,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":49,"call":null,"method":"GET","path":"/v1/","send":"phone; country","fields":["phone number","international format","local format","carrier","line type","mobile country code","mobile network code","country","country code","country calling code","region","city","time zone","valid","line status","VoIP"]},{"provider":"APILayer","api":"Cached phone validation","website":"https://apilayer.com","pricingPage":"https://numverify.com/pricing","pitch":"Capture only good leads, keep your user database clean and fight fraud by validating phone numbers at the point of entry into your system","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"You shall not: [...] use, store, or access any numverify API Data & Services, or the numverify API after the termination of this Agreement; You do not permit Your end users to store [...] numverify API Data & Services for any other purposes","use":"You are hereby permitted to receive, process, and display numverify API Data & Services to individual end-users of your application(s), provided such end users use numverify API Data & Services strictly for their own personal use, You do not permit Your end users to store, distribute, or otherwise exploit numverify API Data & Services for any other purposes. [...] You are permitted solely to use numverify API Data & Services for reference by Your end users. Except as expressly provided herein, under no circumstances whatsoever may You transfer or permit the transfer of numverify API Data & Services outside of your application(s). [...] You shall not: reproduce, copy, modify, distribute, market, display, transfer, sublicense, assign, prepare derivative work(s) or adaptation(s) based on, sell, exchange, barter or transfer, rent, lease, loan, time-share, resell, or in any other manner exploit numverify API Data & Services or the numverify API; make access to numverify API Data & Services or the numverify API available to unauthorized parties, or otherwise post or distribute numverify API Data & Services in any public forum including, but not limited to, print, newsletters, radio, television, or internet; [...] use or permit others to use, market, distribute, or export numverify API Data & Services, or the numverify API; or, use numverify API Data & Services or the numverify API in any manner or for any purpose that violates any law, regulation or right of any person. [...] You also agree not to: [...] redistribute any Information And Content in any manner whatsoever [...] to any person, organization, corporation or other entity, including within your own organization or externally, except for the limited Permitted Uses; [...] present, archive, cache, frame, scrape, or mirror any Information And Content from any part of the Services within another web site, except with express written permission [...]; [...] embed or import any data provided in, on or through the Services into any information services (whether or not web-based), data files, or application software, including without limitation accounting and payroll systems, except as specifically permitted in writing by apilayer.","plan":"Enterprise Plan","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":129.99,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":250000,"unit":"request","renews":"month","expires":"not carried over from one monthly period to the next","costUnits":1,"calls":250000,"monthlyCap":null,"perThousand":0.52,"waterfall":null,"listPerThousand":null,"overagePerThousand":2.0798,"addons":null,"notFoundPerThousand":0.52,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":"never","alsoPaysFor":[],"sharesBudgetWith":["/countries"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/validate","send":"number; country_code","fields":["valid","phone number","local format","international format","country calling code","country code","country","location","carrier","line type"]},{"provider":"APIVerve","api":"Cached phone validation","website":"https://apiverve.com","pricingPage":"https://apiverve.com/pricing","pitch":"Validate phone numbers, see line type and carrier, and flag disposable lines.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"You must not use the API [...] to cache, store, or redistribute Output beyond what the Documentation permits","use":"Free plan: \"Attribution required\", \"Non-commercial use\"; paid plans: \"Commercial license\", \"No attribution required\" (pricing page). Terms: \"You must not use the API to build a product that materially replicates or competes with the Product itself, to exceed or evade quotas, or to cache, store, or redistribute Output beyond what the Documentation permits.\" [...] \"you agree not to use the Products to violate any law, infringe any right, harm any person, transmit malicious code, harvest data unlawfully, circumvent security or usage limits, disrupt or overload our infrastructure, or resell or redistribute raw Product access in a manner the Product is not sold for.\"","plan":"Mega","who":"anyone 13 or over (under 18 only with the permission of a parent or legal guardian)","billing":"monthly","charged":null,"topUp":null,"pay":299.99,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":4000000,"unit":"credit","renews":"month","expires":"credits reset each billing cycle, no rollover","costUnits":10,"calls":400000,"monthlyCap":null,"perThousand":0.75,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Email Validator","every other APIVerve API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":50,"batch":1,"answer":"in the call","latencyMs":354,"call":null,"method":"GET","path":"/v1/phonenumbervalidator","send":"number; country","fields":["country","detected country","country name","country calling code","national number","extension","valid","mobile","VoIP","disposable","line type","valid in its own country","national significant number","location","carrier","time zones","international format","national format","RFC3966 format","E.164 format","risk score","risk level"]},{"provider":"BigDataCloud","api":"Cached phone validation","website":"https://www.bigdatacloud.com","pricingPage":"https://www.bigdatacloud.com/pricing","pitch":"Phone numbers are entered in countless formats — local, international, with or without country codes, with spaces, dashes, or brackets. This API normalises and validates them against the E.164 international standard, so you always know what you're working with.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"Whenever you use our Services in any capacity you agree that you will not use them: in any manner prohibited by these terms and conditions or any other policy or set of restrictions published on our Website; for any unlawful purpose; at a frequency or in a way that is likely to make the system inaccessible to third parties; or for the purpose of creating, developing, refining or otherwise supporting a product or service that competes with our business, without our prior written permission [...] You may not at any time download, scrape or reverse engineer our services, API or Website.","plan":"Bronze","who":"anyone with an account, giving true and complete information about themselves, their business and their contact details","billing":"monthly","charged":null,"topUp":null,"pay":9.95,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":10000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":10000,"monthlyCap":null,"perThousand":0.995,"waterfall":null,"listPerThousand":null,"overagePerThousand":0.995,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Phone Number Validation by IP Address API","Email Address Verification API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":"no limit","batch":1,"answer":"in the call","latencyMs":null,"call":"Phone Number Validation API","method":"GET","path":"/data/phone-number-validate","send":"nothing required; number, countryCode, localityLanguage","fields":["valid","E.164 format","international format","national format","location","line type","country ISO alpha-2 code","country ISO alpha-3 code","country M.49 code","country name","country ISO name","country ISO full name","administrative language ISO alpha-3 code","administrative language ISO alpha-2 code","administrative language ISO name","administrative language native name","UN region","currency numeric code","currency code","currency name","currency minor units","World Bank region ID","World Bank region ISO 2 code","World Bank region name","World Bank income level ID","World Bank income level ISO 2 code","World Bank income level name","country calling code","country flag emoji","Wikidata ID","GeoNames ID","independent"]},{"provider":"Botoi","api":"Cached phone validation","website":"https://botoi.com","pricingPage":"https://botoi.com/pricing/","pitch":"Parses and validates a phone number. Returns formatted versions (E.164, national), country code, and country name.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"By obtaining and using an API key, You agree to: Keep Your API key confidential and not share it with unauthorized parties; Not exceed the rate limits associated with Your plan tier; Not use the API for any unlawful purpose or to transmit harmful content; Not attempt to circumvent authentication, rate limiting, or other security measures; Not resell or redistribute API access without prior written consent from the Company","plan":"Starter","who":"anyone 18 or older","billing":"monthly","charged":null,"topUp":null,"pay":9,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":10000,"unit":"request","renews":"day","expires":"resets daily at midnight UTC","costUnits":1,"calls":10000,"monthlyCap":null,"perThousand":0.03,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["All 150+ endpoints"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":10000,"perSecond":0.5,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":null,"method":"POST","path":"/v1/phone","send":"phone; country","fields":["success","phone number","valid","country code","country","E.164 format","national format","note","request ID","time taken"]},{"provider":"Melissa","api":"Cached phone validation","website":"https://www.melissa.com","pricingPage":"https://www.melissa.com/pricing","pitch":"With only a phone number and/or a country entered, Melissa Global Phone can determine whether the phone number is accurate and callable for the region and identify the country of origin from the international access code.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"as the separate written agreement or license for its APIs sets, which isn't public","use":"as the separate written agreement or license for its APIs sets, which isn't public. Its site terms (“These Terms govern the Site only.”) list what you agree not to do: “You agree not to, and not to permit or enable any third party to: [...] use the Site, any Site content, or any output of a Site demonstration, lookup, sample, or trial to develop, train, fine-tune, benchmark, or improve any machine learning model or artificial intelligence system, or any product or service that competes with Melissa; use any Site lookup, demonstration, sample, free trial, or API key for any purpose other than evaluating Melissa products for your own use, or exceed any usage limit that Melissa publishes or communicates to you;”","plan":"10,000 Credits","who":"anyone","billing":"one-time","charged":null,"topUp":false,"pay":40,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":10000,"unit":"credit","renews":"never","expires":"the whole balance resets to 0 after a year with no use or purchase","costUnits":10,"calls":1000,"monthlyCap":null,"perThousand":40,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Personator","Property Data","BusinessCoder","Global Address Check","Global Name Check","Basic Email Check","Mailbox Email Check","Global IP Locator","Melissa Lookups","Listware","Mailers Online"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":5,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":"doGlobalPhone (GET JSON)","method":"GET","path":"/V4/WEB/GlobalPhone/doGlobalPhone","send":"phone; ctry, ctryOrg, opt (CallerID, DefaultCallingCode, PreferDialingCode, TimeToWait, VerifyPhone), t","fields":["API version","custom data","error code","entry index","status code","phone number","region","country code","country","carrier","caller name","daylight saving time","international format","language","latitude","longitude","city","international prefix","country calling code","national prefix","area code","subscriber number","postal code","suggestions","time zone code","time zone","UTC offset"]},{"provider":"Neutrino API","api":"Cached phone validation","website":"https://www.neutrinoapi.com","pricingPage":"https://www.neutrinoapi.com/plans/","pitch":"Parse, validate and get location information about a phone number.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"The user may create derivative products using our APIs including the data returned from our APIs with the exception of 4.2 below. [...] The user may not distribute, resell or transfer bulk API data to anyone other than the Licensee. Bulk API data is any data returned from any API which includes more than one single data record. [...] as well as any bulk data obtained by storing API response data on your own systems. [...] The user may not embed our APIs into client-side (e.g. JavaScript), desktop or mobile software without the protection of a server-side process or strong encryption. [...] The user may not allow anyone other than Licensee, Licensee’s employees, Licensee’s contractors or Licensee’s vendors to access our APIs or data without the suppliers express written permission.","plan":"On-Demand","who":"anyone paying by Visa, Mastercard or SWIFT","billing":"on-demand","charged":"monthly","topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":0.08,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":[],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":500,"concurrent":250,"batch":1,"answer":"in the call","latencyMs":null,"call":"Phone Validate","method":"GET","path":"/phone-validate","send":"number; country-code, ip","fields":["valid","line type","mobile","carrier","location","country","country code","country ISO3 code","currency code","country calling code","international format","local format"]},{"provider":"NumLookupAPI","api":"Cached phone validation","website":"https://numlookupapi.com","pricingPage":"https://api.numlookupapi.com/v1/agent/plans","pitch":"Send a phone number in any format and get back whether it is valid, its E.164, national and international formats, its country, carrier and line type.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"The Application and its services must be used lawfully and for their intended purposes [...] Users may not use content for purposes outside normal service usage. This includes prohibiting copying, sharing, editing, sublicensing, or selling content, unless explicitly allowed [...] Users may not reproduce or resell the service unless given prior written approval by the Owner.","plan":"scale 500k","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":179.99,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":500000,"unit":"request","renews":"month","expires":"at the end of each month","costUnits":1,"calls":500000,"monthlyCap":null,"perThousand":0.36,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":0.36,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Validate Phone Number"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"result","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":"no limit","batch":100,"answer":"in the call","latencyMs":null,"call":"Batch Validation","method":"POST","path":"/v1/validate","send":"numbers; country_code","fields":["valid","phone number","local format","international format","country calling code","country code","country","location","carrier","line type","E.164 format","national format","RFC 3966 format","possible number","number type","time zone"]},{"provider":"RealValidito","api":"Cached phone validation","website":"https://realvalidito.com","pricingPage":"https://www.realvalidito.com/pricing/","pitch":"Instantly check if a US or Canada phone number is valid and active — with carrier, line type, and location details included.","strengths":[],"aggregators":[],"freshness":"1 day","fieldFreshness":null,"history":null,"keep":"no limit","use":"We grant you a limited, non-exclusive, non-transferable, revocable license to access and use our services for your own internal business purposes only. You may not: Resell, sublicense, or redistribute our data or services to third parties, except as expressly permitted in writing by REALVALIDITO; Use our data to build a competing service or product; Reverse engineer, decompile, or attempt to extract our source code or data sources; Use automated scraping, harvesting, or bulk extraction beyond your authorized API access; Re-purpose or redistribute validated data in any form. [...] You agree to use the Services only for lawful purposes and in compliance with all applicable laws, including the Telephone Consumer Protection Act, the FTC’s Telemarketing Sales Rule, state telemarketing and Do Not Call laws, and privacy laws.","plan":"500,000 phone lookup credits","who":"anyone","billing":"one-time","charged":null,"topUp":false,"pay":500,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":500000,"unit":"credit","renews":null,"expires":"never","costUnits":1,"calls":500000,"monthlyCap":null,"perThousand":1,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":1,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Phone + DNC Lookup (POST /lookups/validate, 1 phone credit and 1 DNC credit a number)"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"result","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1000,"answer":"in the call","latencyMs":null,"call":null,"method":"POST","path":"/phonelookup/validate","send":"numbers","fields":["status","phone number","national format","country prefix","line type","ZIP code","area","city","state","country","time zone","carrier","network type","network domain"]},{"provider":"Strale","api":"Cached phone validation","website":"https://strale.dev","pricingPage":"https://strale.dev/pricing","pitch":"Validate a phone number and classify its type. Returns E.164 format, country, carrier name, and whether it is mobile, landline, or VOIP. Covers 200+ countries.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"You agree not to use the Service to: break the law, evade sanctions, or facilitate fraud; process personal data of EU/UK data subjects without an appropriate lawful basis; circumvent rate limits, quotas, or the Service’s authentication; resell the Service as your own or build a competing product whose primary purpose is to mirror Strale’s capability catalog; scrape or systematically extract Strale’s own metadata (capability descriptions, test results, pricing) outside of the documented public endpoints; use AI-assisted capability outputs as the sole basis for decisions with legal or significant effects on a person without human review [...] You retain all rights to the data you send to the Service and to the structured responses you receive.","plan":"Prepaid wallet","who":"anyone","billing":"one-time","charged":null,"topUp":true,"pay":10,"currency":"EUR","exchangeRate":1.1253,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":"never","expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":22.506,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["every capability and solution"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":10,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":"Phone Validate","method":"POST","path":"/v1/do","send":"capability_slug, inputs.phone_number; country_code, max_price_cents, require_fresh, dry_run","fields":["input","valid","E.164 format","possible","phone type","carrier","country code","country name","national format","international format"]},{"provider":"Trestle","api":"Cached phone validation","website":"https://trestleiq.com","pricingPage":"https://trestleiq.com/pricing/","pitch":"Validate phone numbers worldwide, determine carrier name, line type, and prepaid status, and identify disconnected phone numbers with a phone activity score. Our international coverage ensures accurate and reliable phone data across global markets.","strengths":[],"aggregators":[{"aggregator":"Clay","url":"https://www.clay.com/integrations/action/verify-phone-number-trestle","ownKey":"no Data Credits, 1 Action per call (Actions start at less than $0.01 each)","paid":true,"perThousand":null,"usd":null,"per":"result","resultsPerPage":null,"callStated":true},{"aggregator":"Databar","url":"https://databar.ai/explore/enrichments/verify-phone-number-with-trestle","ownKey":"0 credits a call on the Build or Scale plan","paid":true,"perThousand":49.5,"usd":0.0495,"per":"call","resultsPerPage":null,"callStated":true},{"aggregator":"Deepline","url":"https://deepline.com/integrations/trestle","ownKey":null,"paid":true,"perThousand":21,"usd":0.021,"per":"result","resultsPerPage":null,"callStated":true},{"aggregator":"treg","url":"https://treg.to/catalog/endpoints/trestleiq.people.phone.verify","ownKey":"free","paid":true,"perThousand":15,"usd":0.015,"per":"call","resultsPerPage":null,"callStated":true}],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"for the duration of this Agreement","use":"Customer is authorized to use the Trestle Data for identity verification, lead verification, identity management, caller identification, routing, prioritization use cases, to scrub lists for outbound dialing, and/or for any additional use case(s) expressly set forth on the applicable Order. Customer will not, and shall ensure its Affiliates and Users do not: (a) use the Trestle Data for marketing purposes except to respond to an inbound request; (b) use the Trestle Data in violation of any applicable laws, rules, or regulations or in violation of any third-party right; (c) store or otherwise use the Trestle Data for purposes other than the internal business purposes of the Customer, as contemplated in the applicable Order or Customer Agreement; (d) use the Trestle Data in conjunction with activities prohibited by law; (e) store or cache the Trestle to avoid making additional Queries to the Services; (f) merge stored Trestle Data with other data unless it is coded or tagged to indicate Trestle as its source; or (g) use the Trestle Data for file download in a fixed page format (i.e., create a printable, downloadable directory of personal information). [...] Customer will not: (a) make any Services or Trestle Data available to anyone other than Customer, its Affiliates, and their respective Users; (b) use the Services or Trestle Data for the benefit of anyone other than Customer or its Affiliates; (c) resell, distribute, or otherwise disclose or make available the Services or Trestle Data [...] without the prior written consent of Trestle [...] (h) use the Services or Trestle Data to build a competitive product or service [...] Customer may not use the Services or Trestle Data in connection with any FCRA purpose","plan":"Self-Serve, pay as you go","who":"companies, with a business email address","billing":"one-time","charged":null,"topUp":true,"pay":10,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":10,"unit":"usd","renews":"never","expires":"after one year if not used","costUnits":0.015,"calls":666.666667,"monthlyCap":null,"perThousand":15,"waterfall":null,"listPerThousand":15,"overagePerThousand":null,"addons":null,"notFoundPerThousand":15,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":"never","alsoPaysFor":[],"sharesBudgetWith":["Real Contact API","Address Validation API","Reverse Phone API","Reverse Address API","Caller Identification API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[{"fields":["litigator risk"],"perThousand":5}],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":10,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/3.0/phone_intel","send":"phone; phone.country_hint, add_ons, source_id","fields":["phone ID","phone number","valid","activity score","country calling code","country code","country","line type","carrier","prepaid","error code","error message","warnings"]},{"provider":"Veriphone","api":"Cached phone validation","website":"https://veriphone.io","pricingPage":"https://veriphone.io/pricing","pitch":"Validate any phone number and identify its carrier, line type, and country — in bulk via CSV or instant API.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit","use":"any","plan":"Enterprise","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":249,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":1000000,"unit":"credit","renews":"month","expires":"at the monthly reset, no rollover","costUnits":1,"calls":1000000,"monthlyCap":null,"perThousand":0.249,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Bulk Phone Number Validation"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[{"fields":["original carrier","original line type","current carrier","current line type","current MCC-MNC","original MCC-MNC","ported","carrier data source"],"perThousand":2.241}],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/v3/verify","send":"phone; mode, default_country, record","fields":["status","phone number","valid","invalid reason","line type","short code cost","carrier","region","country","country code","country calling code","international format","local format","E.164 format","time zone","geographic number","lookup mode"]},{"provider":"World Text","api":"Cached phone validation","website":"https://www.world-text.com","pricingPage":"https://www.world-text.com/pricing","pitch":"Validate numbers and lookup networks via HTTP.","strengths":[],"aggregators":[],"freshness":"stored","fieldFreshness":null,"history":null,"keep":"no limit: its terms set none and say “You retain all rights and ownership of Data. We do not claim any ownership rights in Data.” (“Data”: “Account Information, Content, Personal Data and any other information made available to us in connection with the use of the Services”)","use":"“a limited, non-exclusive, non-transferable, non-sublicenseable right to (i) use the applicable Services, (ii) integrate the Services in your Application in order to access the Service, if applicable, and (iii) offer and make available to Service Users the Services solely, or, as integrated into your Application, all in accordance with the Agreement”; “You will not (and will not allow Service Users) to: (i) reverse engineer, decompile, copy or disassemble the Services; (ii) market, sell (subject to Section 1 (c)), sublicense, rent, lease, or otherwise distribute the Services, in whole or in part; [...]”; “You agree that you will not, and will not encourage or permit any party (including but not limited to Service Users) to, access or use the Services: (a) other than as expressly prescribed by the Agreement; (b) in violation of: (i) Compliance Rules or Relevant Laws or (ii) applicable third party licenses; (c) to send spam or unsolicited messages or other communications; [...] (h) to gather, store, upload or otherwise transmit any Data for which you do not have a right to do so; [...]”","plan":"2,000 credits","who":"anyone who creates an account (“Create Account” on its pricing page); the account “must be enabled for HLR lookups”","billing":"one-time","charged":null,"topUp":false,"pay":11.25,"currency":"GBP","exchangeRate":1.3335,"termMonths":null,"from":null,"graduated":null,"units":2000,"unit":"credit","renews":"never","expires":null,"costUnits":null,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["HLR Lookup","MNP Lookup","Send SMS"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":null,"resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"answer":"in the call","latencyMs":null,"call":"Number Information","method":"GET","path":"/hlr/info","send":"msisdn","fields":["mobile country code","mobile network code","country code","country","network","credits"]}],"total":126,"freshness":["Live","Within an hour","Within a day","Within a week","Within a month","Within a year","Stored, age unknown"],"providers":[{"label":"A to Ne","kids":[{"label":"Abstract API","value":"Abstract API on its own site"},{"label":"APILayer","value":"APILayer on its own site"},{"label":"APIVerve","value":"APIVerve on its own site"},{"label":"BigDataCloud","value":"BigDataCloud on its own site"},{"label":"Botoi","value":"Botoi on its own site"},{"label":"Melissa","value":"Melissa on its own site"},{"label":"Neutrino API","value":"Neutrino API on its own site"}],"range":true},{"label":"Nu to W","kids":[{"label":"NumLookupAPI","value":"NumLookupAPI on its own site"},{"label":"RealValidito","value":"RealValidito on its own site"},{"label":"Strale","value":"Strale on its own site"},{"label":"Trestle","value":"Trestle on its own site"},{"label":"Veriphone","value":"Veriphone on its own site"},{"label":"World Text","value":"World Text on its own site"}],"range":true}],"at":[3,18,26,33,46,51,60,72,88,95,97,112,118],"fields":{"Cached phone validation":["country","carrier","country code","valid","country calling code","international format","line type","phone number","E.164 format","national format","local format","location","time zone","city","country name","region","currency code","error code","mobile","mobile country code","mobile network code","status","VoIP","activity score","administrative language ISO alpha-2 code","administrative language ISO alpha-3 code","administrative language ISO name","administrative language native name","API version","area","area code","caller name","country flag emoji","country ISO alpha-2 code","country ISO alpha-3 code","country ISO full name","country ISO name","country ISO3 code","country M.49 code","country prefix","credits","currency minor units","currency name","currency numeric code","custom data","daylight saving time","detected country","disposable","entry index","error message","extension","geographic number","GeoNames ID","independent","input","international prefix","invalid reason","language","latitude","line status","longitude","lookup mode","national number","national prefix","national significant number","network","network domain","network type","note","number type","phone ID","phone type","possible","possible number","postal code","prepaid","request ID","RFC 3966 format","RFC3966 format","risk level","risk score","short code cost","state","status code","subscriber number","success","suggestions","time taken","time zone code","time zones","UN region","UTC offset","valid in its own country","warnings","Wikidata ID","World Bank income level ID","World Bank income level ISO 2 code","World Bank income level name","World Bank region ID","World Bank region ISO 2 code","World Bank region name","ZIP code"]},"same":["api","strengths","waterfall","resultsCap","startPerCall","monthlyFee","addons","catchAllPerThousand","bounceRefund","history","answer"],"facets":["defaults","provider","price","fields","billing","who","freshness","use","paysFor"],"ties":{"Cached phone validation":{"tied":["Abstract API, $19 monthly","BigDataCloud, $9.95 monthly","BigDataCloud, $9.95 monthly, Bronze","Melissa, $40 pack","Melissa, $40 pack, 10,000 Credits","NumLookupAPI, $179.99 monthly","NumLookupAPI, $179.99 monthly, scale 500k"],"movedPages":{},"canonicals":{"Abstract API":"free","APILayer":"free","APIVerve":"free","BigDataCloud":"free-base-get-data-phone-number-validate","Botoi":"free","Melissa":"free-monthly-top-off-get-v4-web-globalphone-doglobalphone","Neutrino API":"free","NumLookupAPI":"free-free-post-v1-validate","RealValidito":"free","Strale":"free","Trestle":"free","Veriphone":"free","World Text":"11-25-pack"}}},"shared":[],"notes":{"name":"The row's name, unique on the sheet: the provider, then the plan's price, like \"API Builderz, $50 monthly\", \"HarvestAPI, $280 pack\", \"Crawlbase, pay as you go\", \"Bright Data, top-up\" (a prepaid balance of any amount), \"AnyAPI, top-up from $10\" (a balance you top up by $10 or more), \"free\" or \"contact us\". If two plans share a price, we add the plan's name, then the call's method and path, its units and the call's name, until no two rows share a name. We build the name for the sheet and leave it out of the sheet's CSV and JSON. datacircle.json and datacircle.csv have the name from its API's sheet.","api":"This column names each row's API. \"Employee profile\" returns a person's LinkedIn profile, on LinkedIn profiles. \"Cached employee profile\" returns it from the provider's copy of LinkedIn, on Cached LinkedIn profiles, which lists the LinkedIn profile plans whose Freshness says a copy. \"Employee email\" finds a person's work email, on Find email. \"Cached employee email\", on the Find cached email sheet, finds a person's work email in the provider's stored data. \"Email validation\" checks whether an address takes mail, on Validate email. On the Cached email validation sheet, \"Cached email validation\" may answer from data the provider keeps, without asking the mail server. \"Employee phone\" finds a person's phone number, on Find phone. \"Cached employee phone\", on the Find cached phone sheet, finds a person's phone number in the provider's stored data. \"Company profile\" returns a company's LinkedIn page, on LinkedIn company profiles. \"Cached company profile\", on the Cached LinkedIn company profiles sheet, returns a company's LinkedIn page from the provider's copy of LinkedIn. \"Company headcount\" counts a company's staff, on its own sheet. \"Cached company headcount\", on the Cached company headcount sheet, counts a company's staff from the provider's stored data. \"Phone validation\" checks whether a phone number is valid, on Validate phone. \"Cached phone validation\", on the Cached phone validation sheet, checks a phone number against data the provider has stored. \"Post comments\" returns the comments on a LinkedIn post, on LinkedIn post comments. \"Post reactions\" returns who reacted to a LinkedIn post and how, on LinkedIn post reactions. \"Employee lookalikes\" returns people similar to the one you send, on Similar people. \"Company lookalikes\" returns companies similar to the one you send, on Similar companies. \"Company technologies\" returns the tools a company uses, on its own sheet. \"Cached company technologies\" returns the tools a company uses, from a copy the provider saved earlier. \"Company job count\" counts the jobs a company has open on LinkedIn, on its own sheet. \"Employee posts\" returns a person's LinkedIn posts, on LinkedIn person posts. \"Company posts\" returns a company's LinkedIn posts, on LinkedIn company posts. \"Cached employee posts\" and \"Cached company posts\", on Cached LinkedIn person posts and Cached LinkedIn company posts, return them from the provider's copy of LinkedIn. \"Company funding\" returns a company's funding rounds, on its own sheet. \"Cached company funding\", on the Cached company funding sheet, returns them from the provider's stored data. \"Company jobs\" returns the jobs a company has open, on Company open jobs. \"Employee search\" finds people by job title, company and place, on LinkedIn people search. \"Cached employee search\", on the Cached LinkedIn people search sheet, finds people in the provider's copy of LinkedIn. \"Company search\" finds companies by industry, size and place, on LinkedIn company search. \"Cached company search\" finds companies by industry, size and place in the provider's copy of LinkedIn. It is on the Cached LinkedIn company search sheet. \"Job search\" finds jobs by title, company and place, on LinkedIn job search. \"Cached job search\" finds jobs by title, company and place in a copy of LinkedIn's jobs. It is on the Cached LinkedIn job search sheet. \"Reverse email lookup\" finds the person behind an email, on its own sheet. \"Cached reverse email lookup\" finds who owns an email address in data the provider already holds. It is on the Cached reverse email lookup sheet. \"Post search\" finds posts by keyword, on LinkedIn post search. \"Post details\" returns a post from its URL or ID, on LinkedIn post details. \"Job details\" returns a job from its URL or ID, on LinkedIn job details. \"Employee comments\" returns the comments a person left on posts, on LinkedIn person comments. \"Employee reactions\" returns the posts a person reacted to, on LinkedIn person reactions. \"Post reposts\" returns the people who reposted a LinkedIn post, on LinkedIn post reposts. \"Employee recommendations\" returns the recommendations on a person's LinkedIn profile, on LinkedIn person recommendations. \"Job lookalikes\" returns jobs similar to the one you send, on Similar jobs. \"Employee articles\" returns a person's LinkedIn articles, on LinkedIn person articles. \"Company enrichment\" returns a company's profile from the provider's own database, on Company enrichment. \"Cached company enrichment\", on the Cached company enrichment sheet, returns a company's profile from the provider's stored data. \"People search\" finds people in the provider's own database. \"Cached people search\", on the Cached people search sheet, finds people in the provider's stored data. \"Company discovery\" finds companies in the provider's own database. \"Cached company discovery\", on the Cached company discovery sheet, finds companies in the provider's stored data. \"Job postings\" finds job postings in the provider's own database. \"Cached job postings\", on the Cached job postings sheet, finds job postings in a copy the provider keeps. \"Job posting details\" returns a job posting from its ID. \"Person enrichment\" returns a person's profile from the provider's database. \"Leadership changes\" returns the new hires, promotions and departures in a company's senior roles. \"Cached leadership changes\" returns a company's leadership changes from a copy the provider keeps. \"Company hierarchy\" returns a company's parent companies and subsidiaries. Pick an API from the GTM APIs list on the left of the sheet. Pick \"All GTM APIs\" in the GTM APIs list to see every API in one sheet. We name each folder in the zip after its API.","score":"We score each plan out of 100 on five parts: price, data, cost to get started, bundled calls and performance. We score data and performance from our benchmark of the provider's call. Until we benchmark the call, the plan's data, performance and Overall scores are N/A. A plan whose data score is 0 has an Overall score of 0, whatever its other scores. Each API's sheet shows what we measured on each benchmarked plan, in the columns after its price. We rank a plan's price per 1,000 against the price per 1,000 of its API's other scored plans. We score cost to get started and bundled calls on the plan alone. We give N/A to free, yearly and contact us plans, plans over $500 to start, plans bought on a marketplace and plans that need your own LinkedIn account. Click Score in the sheet's bar to set the five weights. The JSON, datacircle.json and datacircle.csv give each plan's score at the default weights. A plan with N/A has an empty score there. The sheet's CSV has no scores.","Price score":"The plan's price score out of 100. We rank the plan's $ per 1,000 against the $ per 1,000 of the other scored plans of its API. We also count the cost of a call that finds nothing. Some plans give no $ per 1,000. For those plans, when each call returns one result, we use the price our benchmark paid per call. We scale that price by what a credit costs on the plan. On the sheet, hover over or tap the score to see how we worked it out.","Data score":"The plan's data score out of 100, from our benchmark of its provider's call: how complete the call's answer is, or how often it is right, depending on the API. Until we benchmark the call, the score is N/A, and so is the Overall score. On the sheet, point at the score to see how we scored it. Each API's sheet shows what we measured on each benchmarked plan, in the columns after its price.","Cost to get started score":"The plan's score out of 100 for getting your first result: who can get it, how you pay, and the least you pay before it. On the sheet, point at the score to see why.","Bundle score":"The plan's score out of 100 for the other calls its price gets you, as its pages list them under Also pays for. On the sheet, point at the score to see why.","Performance score":"The plan's performance score out of 100, from our benchmark of its provider's call: the fastest benchmarked provider's median time divided by this provider's. A median under 0.1 s counts as 0.1 s, since the baseline we take off varies by about that much. Until we benchmark the call, the score is N/A, and so is the Overall score. It is N/A too where the call gave no answer we could time, and the Overall score leaves it out. On the sheet, point at the score to see how we scored it. Each API's sheet shows what we measured on each benchmarked plan, in the columns after its price.","perThousand":"The price of 1,000 phones on this plan, in dollars. It is 0 on a free plan. On a plan that charges by the page, we divide 1,000 by the most phones one page holds. We round that up to whole pages and add up what the pages cost. We leave it blank when the provider doesn't say how many phones a page holds. On a flat fee, we take the most phones the plan allows in one month and multiply by the number of months the fee covers. We divide the fee by that total. Then we multiply by 1,000. We leave it blank when the provider doesn't say how many phones the plan allows. On a flat fee with no cap on phones, the sheet shows \"no limit\", and the CSV and JSON leave it blank. On a waterfall's paid plan, we show the average cost of a call. We take the price of each provider listed under Waterfall. We weight each price by how often a call reaches that provider. We leave it blank when the waterfall doesn't list a hit rate or a page size for a provider a call can reach. On a plan with a Monthly fee, we first subtract one month of the fee from the plan's units. Then we divide the plan's price by the number of phones the remaining units buy. Then we multiply by 1,000. We leave it blank when the Monthly fee uses up all the plan's units. We leave it blank on a top-up, because a top-up buys no fixed number of phones. We also leave it blank when the provider's website doesn't say what a phone costs on this plan, or how many phones the plan's price buys.","billing":"How you pay: \"free\", \"on-demand\" (you pay for what you use, with nothing to buy first), \"one-time\" (a pack or a top-up you pay for first, then use), \"contact\" (no public price: you ask the provider for one), or a subscription: \"monthly\", \"quarterly\" (every three months), \"half-yearly\" (every six months) or \"yearly\". The sheet shows \"one-time\" as \"pay first\" and \"on-demand\" as \"pay as you go\".","perMonth":"On a subscription: its price for one month in dollars, its Pay divided by the months it buys (termMonths), 12 on most yearly plans. We work it out for the sheet, to the cent. We leave it out of the sheet's CSV and JSON, and datacircle.json and datacircle.csv have it. Blank (null) on every other plan.","notFoundPerThousand":"Dollars for 1,000 phones the provider can't check. 0 when the provider charges nothing for them, as on free plans. On a waterfall, the cost of a call when no provider finds the answer: the sum of the prices of the providers that charge for a miss.","strengths":"The plan's strengths, which we work out from its row: each one is a band that many plans of its API are in. Each API has its own strengths, listed and explained under Strengths on datacircle.dev/fields, and Validate email, Find phone, Validate phone, LinkedIn company profiles, Company headcount, LinkedIn post comments, LinkedIn post reactions, Similar people, Similar companies, Company technologies, Company job count, LinkedIn person posts, LinkedIn company posts, Company funding, Company open jobs, LinkedIn people search, LinkedIn company search, LinkedIn job search, Reverse email lookup, LinkedIn post search, LinkedIn post details, LinkedIn job details, LinkedIn person comments, LinkedIn person reactions, LinkedIn post reposts, LinkedIn person recommendations, Similar jobs, LinkedIn person articles, Company enrichment, People search, Company discovery, Job postings, Job posting details, Person enrichment, Leadership changes and Company hierarchy have none yet. Cached LinkedIn profiles and Find cached email have the strengths of LinkedIn profiles and Find email, but never \"read live\" or \"found live\". The other cached sheets have none yet. Blank ([] in the JSON) when the plan has none, and we leave Strengths off its page. Under Filters, you see only the rows with every strength you tick.","aggregators":"Aggregators like treg and Deepline sell the row's call. With one aggregator account, you reach many providers. Each cell says what a call costs through the aggregator with your own provider key. It also says what 1,000 phones cost when you pay the aggregator and have no account at the provider: \"treg: your key free, paid $1.50\". We add \"per 1,000 results\" when the aggregator charges per phone it finds, and say \"paid, no fixed price\" when the aggregator publishes no price. For an aggregator that charges by the page, we take the largest page size and price the full pages you need for 1,000 results. We write \"paid, page size not stated\" when the aggregator doesn't say how many results a page holds. We write \"listed, how it's sold not stated\" when the aggregator lists the call but doesn't say if you pay the aggregator or use your own key. When the aggregator sells one of the provider's calls without saying which, the cell ends with \"this call or another\", the provider's name and \"call\": \"this call or another Pubrio call\". A cell says \"none\" when no aggregator we checked for the row's API sells the call. A blank cell (null in the JSON) means we haven't checked any aggregator for that API. We skip calls an aggregator doesn't list. In the JSON, each aggregator has these keys. aggregator is its name. url is its page for the call. ownKey is what a call costs there with your own key, or null when you can't use yours. paid is true when you can pay the aggregator. paid and ownKey are both null when the aggregator doesn't say how it sells the call. callStated is false when the aggregator sells this call or another of the provider's and doesn't say which. usd is its price in dollars for one per, or null when it sets no price. perThousand is its price in dollars for 1,000. per is \"call\", \"result\" or \"page\". resultsPerPage is the most results a page holds, or null. So far we have read AnyAPI, Clay, ColdIQ, Databar, Deepline, Monid, Orthogonal, RouterGrowth and treg.","waterfall":"Some routers, like treg's, try one provider after another until one finds the phone. On a router's call, the Waterfall column lists each provider the router tries, in order. Each provider shows the router's name for its call in brackets. Then comes its price per 1,000 on this plan, then how often it finds the phone. We add \"misses billed\" when the provider charges for a miss. For a provider that charges by the page, we count the full pages that hold 1,000 results at the largest page size, and we write \"page size not stated\" when the provider doesn't say how many results a page holds. The router publishes how often each provider finds a phone over all its calls. We assume each provider finds phones at that same rate on the calls the earlier providers miss. We leave the Waterfall column blank on calls with a single provider. In the JSON, each step has these keys. provider is the provider's name. call is the provider's call, which you can also make on its own. perThousand, per and resultsPerPage mean the same as on a plan's row. hitRate is from 0 to 1, or null when the router gives none. missesBilled is true when the provider charges for a miss.","repeatFree":"On a call that costs units: how long you can get a phone again free on this plan after you pay for it. On a flat fee with a daily or monthly limit: how long you can get a phone again without using up the limit after you first get the phone. We copy it from the provider's pages, like \"20 minutes\". \"no limit\" means the provider never charges again for a phone you paid for once. \"never\" means the provider says it charges each time you get the phone again. Blank when the provider's pages don't say.","per":"The price counts a \"call\" or a \"result\". A call asks for one phone. A result is each phone a call returns. Some calls return a page of results: a post's comments, reactions or reposts, a person's or company's posts, a person's articles, comments or reactions, a company's open jobs, the people, companies, jobs or posts a search finds, or people, companies or jobs similar to the one you send. \"result\" counts each phone on the page. \"page of 50\" counts each page, and you pay for a whole page even when it holds fewer than 50. resultsPerPage is the most phones a page holds. It is null when the price doesn't count pages or the provider doesn't say the page size. \"page, size not stated\" means the provider doesn't say how many phones a page holds.","resultsCap":"For a search API, the most results you can get from one search on this plan, however many pages you ask for. \"no limit\" when the provider says you can get every match. Blank (null in the JSON) when the provider's docs don't say, or when the API isn't a search.","startPerCall":"A fee in dollars you pay once for each call, on top of the price per phone, like an Apify Actor's start fee. You pay the same fee for a call of 1,000 phones or a call of one phone. We leave this fee out of the $ per 1,000. It is $0.00 on a free plan. It is blank when the plan has no start fee. Some providers' pages give a range, like \"2-3 credits\". When the page gives a range, startPerCall is the lowest fee and startPerCallMax is the highest. The sheet and the CSV show \"$0.04 to $0.06\". startPerCallMax is blank on a plan with one start fee or none.","monthlyFee":"A monthly fee the call needs. The provider takes it from the plan's units. For example, RouterGrowth charges $9.625 a month for each LinkedIn account you connect. monthlyFee is the fee in dollars. monthlyFeePer is what one fee pays for, like \"LinkedIn account\". The Enough for and $ per 1,000 columns count what is left after one month of the fee. Blank (null in the JSON) when the call has no monthly fee.","extras":"Fields that cost more. Each has its fields and its perThousand on top of the row's.","Also pays for":"The other calls you get for the plan's price, each with its own limit, in the provider's words. We leave out apps, extensions, MCP servers, proxies and storage, since they are not calls. We also leave out features you can use only in the provider's app, like sending its email campaigns. For example, gtm-api.com's account price also buys 100 searches, 50 messages and 25 connection requests a day. \"nothing\" when you get only the row's call. The row's $ per 1,000 is for that call alone, since providers don't say how to split their price. Blank (null in the JSON) until we read the provider's plan. Also blank on a \"contact\" plan whose pages don't say what its price buys.","overagePerThousand":"On a subscription: dollars for each 1,000 phones you get past the plan's units, when the provider sells extra phones.","addons":"On an email API's subscription: the packs of units the provider sells on top of the plan, as its pricing page lists them. Each has its units, its pay in the plan's currency, when it renews (\"month\" or \"year\" when you pay for it again with the plan, \"never\" when you buy it once), and its perThousand, dollars for 1,000 emails at its price. The sheet's CSV says \"500 credits a month for $10 ($20.00 per 1,000)\". An empty list when the provider sells none. Blank (null) on every other plan.","catchAllPerThousand":"On an email API: dollars for 1,000 calls that return an address at a catch-all domain. Such a domain takes mail for any address, so you can't check whether the person's mailbox exists, and the email may bounce. 0 when they cost nothing, or when the provider returns no such address. The same as the row's $ per 1,000 when the provider charges for any address it finds. Blank when its pages don't say.","bounceRefund":"On an email API: the credit or refund the provider gives when an address it charged you for bounces, and the conditions, in its pages' words, like \"the credit, reported from the dashboard or the API and reviewed\". \"never\" when its pages say a bounced address stays charged. Blank when they don't say.","pitch":"How the provider sells the row's call, quoted from the call's own page, or the provider's own pitch when one page covers all its calls. \"[...]\" marks a cut.","freshness":"How old the answer may be, from the provider's pages. \"live\": the provider reads LinkedIn, the company's website or its job board, or finds or checks the email or phone number, when you call. A plan is \"live\" too when the provider keeps each answer for an hour or less and gives it again to anyone who asks the same question in that time. Renidly keeps each answer for 20 minutes. \"1 month\" or \"30 days\": the provider answers from a copy it refreshes that often. \"as of 2025-11-13\": from a copy last refreshed that day. \"stored\": from a copy the provider's pages don't date. We also mark an email or phone check \"stored\" when it reads only the format, the domain's DNS and the provider's own lists. That check never asks the mail server or the carrier. Blank (null in the JSON) when its pages don't say. The cached sheets are Cached LinkedIn profiles, Find cached email, Cached LinkedIn company profiles, Cached company headcount, Cached company enrichment, Cached people search, Cached company discovery, Cached company funding, Cached email validation, Cached LinkedIn people search, Find cached phone, Cached reverse email lookup, Cached LinkedIn job search, Cached LinkedIn company search, Cached company technologies, Cached phone validation, Cached LinkedIn person posts, Cached LinkedIn company posts, Cached job postings and Cached leadership changes. We put a plan on its API's cached sheet when the plan's Freshness says the provider answers from a copy. We put every other plan on its API's own sheet. In brackets, we list the fields whose freshness differs on the provider's pages. fieldFreshness gives each of them its own freshness. Bright Data's LinkedIn profile is \"live (current title, jobs, schools: as of 2025-11-13)\", since LinkedIn put those three behind its login wall and Bright Data serves them from its cache.","history":"How far back the answers reach, on an API whose answers are dated, such as a company's funding rounds or its open jobs. \"since 2016\": back to 2016. \"open only\": only what is open now. \"the last 7 days\": a window that ends today. \"no limit\": every one ever. \", closed only\" after it: the closed ones alone. Blank (null in the JSON) when the provider's pages don't say, or when the answers aren't dated.","keep":"How long the provider's terms let you keep its API's answers. \"no limit\" when they set none. \"no API terms\" when the provider has no API terms.","use":"What the provider's terms let you use its API's answers for, and what they ask in return, like a link back or a credit. \"any\" when they limit nothing and ask nothing. \"no API terms\" when the provider has no API terms.","pay":"The plan's price, in its currency. On a subscription, it pays for the months in termMonths. The sheet's CSV writes the months after the price: \"$39.00/month\", \"€99.00/month\" on a plan in euros, or \"$468.00/15 months\" on gtm-api.com's yearly plan. On a pack, it is the pack's price. On a top-up, it is the smallest amount you can top up. On a top-up with no minimum from the provider, it is blank (null in the JSON). On a free plan, it is $0.00. On a usage tier, it is what you pay each month before you reach the tier. You pay for the calls in the lower tiers, each at its own price. If the tier's minimum is higher than those calls cost, you pay the minimum. Before Crawlbase's next 10M requests, you pay $583 each month. On a pay-as-you-go plan, the sheet's Pay column shows Charged.","units":"What the plan gives for its price, counted in unit. On a usage tier, where the tier starts: \"from the 51st call a month\".","calls":"The number of phones you get for the plan's price, counted in per. A call and a result are each one phone. On a plan that charges by the page, calls and monthlyCap count pages. calls is the number the plan's units pay for: \"100 calls, once\" for a free trial, \"1,250 results a month\" for an allowance. monthlyCap is for a call that costs 0 units, like a call on a flat fee. monthlyCap is the most phones you get a month, or \"no limit\". On a plan that limits calls per day or per month, monthlyCap is the most calls the limit allows in 30 days: 90,000 for 3,000 calls a day. The Enough for column shows 3,000 calls a day as \"90,000 calls a month\". Enough for shows calls, or monthlyCap when a row has no calls. On a plan with a Monthly fee, calls is the number of calls left after the provider takes one month's fee from the plan's units. We count the calls again each time the provider refills the plan's units. Enough for says \"0 calls left after the monthly fee\" when the fee uses up all the plan's units. Enough for is blank when the provider doesn't say how many phones you get. Enough for is also blank when a waterfall's average call costs nothing. calls and monthlyCap are null when Enough for is blank.","expires":"When the units you don't use lapse, in the provider's words: \"never\", \"365 days\", \"at renewal: unused credits do not carry over\". Blank when its pages don't say.","perDay":"The most calls a day.","perSecond":"The most calls a second you can keep up. When the provider counts a limit over a longer window, we divide it: a limit per minute by 60, per 5 minutes by 300, per hour by 3,600. When it sets several, we show the tightest: 25 a second and 40 a minute is 0.67. We round it to two decimals, and a rate under 0.1 to two digits past its zeros: 5 an hour is 0.0014.","concurrent":"The most calls running at once, or \"no limit\". \"n/a\" when the provider sets no cap on calls at once but limits them by the second: its \"Per second\" limits you. Blank (null) when the provider's pages don't say.","batch":"The most phones one call takes on this plan. 1 when it takes one at a time. \"no limit\" when the provider says a call takes any number. Blank (null) when a call takes a list and the provider's pages don't say how long.","answer":"The way you get the call's answer. \"in the call\" when the call's response holds the answer. \"by polling or webhook\" when the call returns a job. Once the job is done, you get the answer from another call or at your webhook. \"in the call or by polling\" when the call returns the answer if it is ready in time. If it isn't ready, the call returns a job you check later. An Apify Actor returns a job when it runs past 5 minutes. \"in the call or by webhook\" when you choose in your request. \"by polling\" when only another call gets the answer. \"by webhook\" when only a URL you give gets the answer. Blank (null) when the provider's pages don't say.","latencyMs":"The median time a call takes. If we benchmarked the row's call, we show our benchmark's median, as in its API's benchmark columns: each call's time minus the mean time of three free calls to the same provider before it. If that mean is longer than the call, we use the provider's median baseline, capped at the call's time, so no time is below zero. For other rows, it is the time the provider's pages give, or one we measured when we added the row. Blank (null) when we have neither, or when we benchmarked the call and it gave no answer we could time. Milliseconds in the JSON and datacircle.csv, seconds on the sheet and in its CSV.","send":"What you give the call: a phone number. The call needs the inputs before \"Optional:\". The optional ones come after it, or after a semicolon in the CSV and the JSON.","method":"The call's HTTP method.","path":"We give the path from the provider's docs. When that path fails, we give the path that works. Each plan of a call has the same path. A plan the provider serves at its own address has its own path.","plan":"The plan, as the provider names it on its pricing page.","who":"Who the provider offers the plan to: \"anyone\", or the condition its pages set, like \"anyone with a work email\" or \"on approval of an application\".","readFrom":"The pages we read the row's values from. They are the sheet's last column: click a cell to see each page, or press ⌘C to copy them all."},"billed":{"free":"Free: nothing to pay","on-demand":"Nothing to buy first: you pay as you go","one-time":"You buy credit first, as a pack or any amount you like, then spend it on calls","contact":"No public price: you ask the provider for one","monthly":"A monthly subscription","quarterly":"A quarterly subscription","half-yearly":"A subscription for 6 months","yearly":"A yearly subscription"},"defaults":["No contact us plans","No free plans","No yearly plans","$500 or less to start"],"kept":13,"paid":{"ranked":{"Cached phone validation":[0.0066,0.0083,0.0163,0.0167,0.03,0.0333,0.08,0.249,0.36,0.36,0.396,0.399,0.44,0.44,0.52,0.598,0.75,0.78,0.796,0.799,0.799,0.995,0.995,0.9998,0.9998,0.9999,1,1.19,1.1998,1.299,1.4,1.4995,1.58,1.96,1.998,1.998,2,2,2,2.4,2.998,3.8,4,6,6.3333,9.5,10,15,21.6,22.506,35,35,40,40]},"bench":{"Cached phone validation|Neutrino API|/phone-validate":{"data":0,"performance":null,"median":null,"measured":null,"fastest":"Abstract API","fastestMedian":100,"fastestMeasured":49,"called":20,"inputs":20,"fewer":true,"days":["2026-10-20","2026-10-21","2026-10-23"],"row":"Neutrino API","untimed":"Nothing to time means the call checks only the number's format and skips the live check on the number, which takes most of the time in the other calls. Its Performance score is then N/A."},"Cached phone validation|Abstract API|/v1/":{"data":0.8571,"performance":1,"median":100,"measured":49,"fastest":"Abstract API","fastestMedian":100,"fastestMeasured":49,"called":20,"inputs":20,"fewer":true,"days":["2026-10-23"],"row":"Abstract API"},"Cached phone validation|Botoi|/v1/phone":{"data":0,"performance":null,"median":null,"measured":null,"fastest":"Abstract API","fastestMedian":100,"fastestMeasured":49,"called":20,"inputs":20,"fewer":true,"days":["2026-10-23"],"row":"Botoi","untimed":"Nothing to time means the call checks only the number's format and skips the live check on the number, which takes most of the time in the other calls. Its Performance score is then N/A."},"Cached phone validation|Strale|/v1/do":{"data":0,"performance":null,"median":null,"measured":null,"fastest":"Abstract API","fastestMedian":100,"fastestMeasured":49,"called":9,"inputs":20,"fewer":true,"days":["2026-10-23"],"row":"Strale","untimed":"Nothing to time means the call checks only the number's format and skips the live check on the number, which takes most of the time in the other calls. Its Performance score is then N/A."}}},"alert":true,"bench":{"groups":[{"name":"Numbers judged","note":"On 20, 21 and 23 October 2026, we sent each provider up to 20 numbers, all from the same list. Some providers got the same number more than once. Time is each call minus a baseline, so the distance to the provider's servers drops out. Numbers whose fate we know. Called: the numbers we called each provider on. A call made for one country's numbers was called on that country's numbers alone. Real: someone put it under their name in an email they sent us. Fictional: in a range its country keeps for films and books, never given to anyone. Wrong means valid on a fictional one or invalid on a real one. Unsure is a refused call, or one that gave no verdict in time. Where we called a provider more than once on a number, that number counts once, as the share of its calls that said so, so its counts can have a decimal.","columns":[{"name":"Called","kind":"count","values":{"Neutrino API":[20,20],"Abstract API":[20,20],"Botoi":[20,20],"Strale":[9,20]}},{"name":"Real, said valid","kind":"count","values":{"Neutrino API":[13,13],"Abstract API":[13,13],"Botoi":[11,13],"Strale":[8,8]}},{"name":"Fictional, said invalid","kind":"count","values":{"Neutrino API":[1,7],"Abstract API":[5,7],"Botoi":[0,7],"Strale":[0,1]}},{"name":"Wrong","kind":"count","values":{"Neutrino API":[6,20],"Abstract API":[2,20],"Botoi":[9,20],"Strale":[1,9]}},{"name":"Unsure","kind":"count","values":{"Neutrino API":[0,20],"Abstract API":[0,20],"Botoi":[0,20],"Strale":[0,9]}}]},{"name":"Time per number","note":"Each time is the call's time minus its baseline, for our first call on each number. We time only right answers. A wrong or unsure answer doesn't do the job, however fast. Later we added a new provider and ran it side by side with the others on the same numbers. For each provider in the side by side run, we use its time from the side by side run. All of these times come from the same day. In that run, a provider may have answered from answers it saved earlier. If so, we keep the time of its first call. We don't time any other repeat call on the same number, since the provider may answer it from answers it saved. The baseline is the mean of three free calls to the same provider just before the call, each on a connection already open. If that mean is longer than the call, we use the provider's median baseline instead. We cap the baseline at the call's time, so no time drops below zero. Nothing to time means the call checks only the number's format and skips the live check on the number, which takes most of the time in the other calls. Its Performance score is then N/A.","columns":[{"name":"Median","kind":"ms","values":{"Neutrino API":null,"Abstract API":49,"Botoi":null,"Strale":null}},{"name":"10th percentile","kind":"ms","values":{"Neutrino API":null,"Abstract API":36,"Botoi":null,"Strale":null}},{"name":"90th percentile","kind":"ms","values":{"Neutrino API":null,"Abstract API":99,"Botoi":null,"Strale":null}},{"name":"Fastest","kind":"ms","values":{"Neutrino API":null,"Abstract API":0,"Botoi":null,"Strale":null}},{"name":"Slowest","kind":"ms","values":{"Neutrino API":null,"Abstract API":201,"Botoi":null,"Strale":null}},{"name":"Baseline","kind":"ms","values":{"Neutrino API":null,"Abstract API":293,"Botoi":null,"Strale":null}}]},{"name":"The phone validation call","note":"The provider's own phone validation call, and what one number cost on this run.","columns":[{"name":"Call","kind":"text","values":{"Neutrino API":"GET neutrinoapi.net/phone-validate","Abstract API":"GET phoneintelligence.abstractapi.com/v1/","Botoi":"POST api.botoi.com/v1/phone","Strale":"POST api.strale.io/v1/do, capability phone-validate"}},{"name":"Charged per number","kind":"text","values":{"Neutrino API":"$0.00008","Abstract API":"$0.0038","Botoi":"$0.00003","Strale":"$0.0225"}}]}],"inputs":{"said":"We don't list the 20 numbers we called, as they hold people's data.","keys":[],"rows":[]}},"more":"/assets/sheet-KpMz9bW-.json"}