Proxy & IP Quality Checker avatar

Proxy & IP Quality Checker

Pricing

from $0.60 / 1,000 ip checks

Go to Apify Store
Proxy & IP Quality Checker

Proxy & IP Quality Checker

Check IP quality for scraping: residential, mobile, datacenter or VPN detection, Tor and blocklist checks, geolocation, and block risk for Google, Amazon, Cloudflare and social media.

Pricing

from $0.60 / 1,000 ip checks

Rating

0.0

(0)

Developer

Redify

Redify

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Categories

Share

Proxy & IP Quality Checker: know which IPs will get you blocked before you scrape

Proxy & IP Quality Checker

Know which IPs will get you blocked โ€” before you scrape.

Paste your proxy list and get, for every IP, a quality score from 0 to 100, its real type (residential, mobile, datacenter, VPN or Tor), its block risk on Google, Amazon, Cloudflare and social media, and a clear verdict: keep it or drop it.

Run it on 100,000 IPs in one batch, or call it in real time from your scraper. You only pay for the IPs you check.


๐Ÿšซ The problem: bad proxies cost you money

You bought "residential" proxies. Some of them are actually datacenter ranges. Others are recycled addresses already on blocklists. Half your pool sits in the same subnet, so one ban takes them all down.

You only find out after the fact: captchas, 403 errors, empty pages, wasted compute and wasted proxy bandwidth.

This Actor checks every IP before you use it, so you send traffic only through the addresses that will actually get through.

โœ… What you get for every IP

๐ŸŽฏ Quality score and gradeA 0โ€“100 score and an Aโ€“F grade, plus a riskScore for teams used to fraud-score tools
๐Ÿ  Real IP typeResidential, mobile, datacenter, business or anonymizer, with a confidence level
๐Ÿ•ต๏ธ VPN detection by namePrivate Internet Access, NordVPN and Mullvad exits identified from the providers' own server lists
๐Ÿง… Tor and blocklistsTor exits, Spamhaus DROP and ASN-DROP, botnet C2 servers, IPs recently reported for attacks or bot activity
โ˜๏ธ Cloud provider detailsAWS, Google Cloud, Oracle, Cloudflare, Fastly, DigitalOcean and Linode, with service and region when available
๐Ÿšฆ Block risk per targetSeparate risk levels for general websites, Google Search, Amazon, Cloudflare/Akamai-protected sites and social media
๐ŸŒ GeolocationCountry, region, city, coordinates and time zone
๐Ÿ”Œ Network and connectionISP, ASN, organization, shared (CGNAT) or dedicated, dynamic or static, Googlebot/Bingbot detection
๐Ÿ’ฌ Plain-English explanationEvery score lists the exact reasons behind it, so you can trust and verify it

๐Ÿ“Š Plus a report on your whole pool

A single bad IP is a problem. A badly built pool is a bigger one. After each run you also get:

  • Pool grade and diversity score: how well your IPs are spread across subnets and providers.
  • Distribution by type, country, ASN and /24 subnet.
  • Automatic warnings, for example: "A single /24 subnet makes up 40% of the pool: one range ban can take out a large share of your IPs."
  • Two ready-to-use lists: CLEAN_IPS (keep these) and FLAGGED_IPS (remove these). Drop them straight into your scraper config.

๐Ÿ’ก Who is it for?

  • Scraping teams checking a new proxy provider before committing to a contract.
  • Developers who want to filter dead-weight IPs out of their rotation automatically.
  • Proxy buyers verifying that "residential" really means residential.
  • Anyone automating the web who wants fewer captchas and fewer bans.

โšก Why this Actor

  • Just send IPs. No proxy credentials, no traffic through your proxies. Nothing leaves your control.
  • Paste proxy lists as they are. 1.2.3.4:8080, user:pass@1.2.3.4:8080, http://user:pass@1.2.3.4:3128, 1.2.3.4:8080:user:pass and [2001:db8::1]:80 all work. The IP is extracted for you.
  • Fast at scale. All data is indexed in memory, so each lookup takes microseconds. 100,000 IPs in one run is routine.
  • Fair billing. Duplicates, invalid lines and private or reserved IPs are never charged.
  • Respects your budget. Set a maximum cost per run: the Actor stops cleanly and keeps every result already computed.
  • Always fresh data. Blocklists refresh every 1 to 12 hours, geolocation weekly. No stale database.
  • Batch or real-time. Use the Console, schedule runs, or call the built-in HTTP API from your code.

๐Ÿš€ How to use it

Option 1: Batch run (no code)

  1. Paste your IPs or your proxy list into IP addresses, one per line.
  2. Click Start.
  3. Download your results from the Output tab as JSON, CSV or Excel.
  4. Open the Storage tab for the pool report, CLEAN_IPS and FLAGGED_IPS.

Input example:

{
"ips": ["8.8.8.8", "user:pass@73.158.42.17:8080", "52.94.236.248"]
}
OptionDefaultWhat it does
ipsโ€”Your IPs or proxy list, one per line
reverseDnsfalseAdds the PTR hostname of each IP. Slightly better detection, slower runs
minScore0Saves only IPs at or above this score to the dataset. The pool report still covers every IP
includeInvalidfalseAlso lists the input lines that are not valid IPs

Option 2: Real-time API

The Actor runs as an always-on HTTP API. Open the API โ†’ Endpoints tab to get your URL and try it from your browser.

# One IP
curl "https://<your-standby-url>/check?ip=8.8.8.8" \
-H "Authorization: Bearer <APIFY_TOKEN>"
# Several IPs (comma-separated)
curl "https://<your-standby-url>/check?ip=8.8.8.8,1.1.1.1" \
-H "Authorization: Bearer <APIFY_TOKEN>"
# Up to 1,000 IPs per request
curl -X POST "https://<your-standby-url>/check" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"ips": ["8.8.8.8", "user:pass@73.158.42.17:8080"]}'

Add reverseDns=true to the URL (or "reverseDns": true in the body) to include hostnames.

Option 3: From your code

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("<USERNAME>/ip-quality-checker").call(run_input={
"ips": ["8.8.8.8", "user:pass@73.158.42.17:8080"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["scraping"]["recommendedUse"]:
print("keep", item["ip"], item["score"])

You can also connect the Actor to Make, Zapier, n8n, webhooks or Google Sheets through Apify integrations.


๐Ÿ“ฆ Output example

A datacenter proxy sold as a "premium" IP, caught on an official AWS range:

{
"ip": "52.94.236.248",
"score": 55,
"riskScore": 45,
"grade": "C",
"verdict": "Average quality โ€” datacenter IP",
"type": "datacenter",
"typeConfidence": "high",
"asn": { "number": 16509, "organization": "Amazon.com, Inc." },
"isp": "Amazon.com, Inc.",
"organization": "Amazon AWS",
"location": {
"country": "US", "countryName": "United States", "continent": "NA",
"region": "Virginia", "city": "Ashburn",
"latitude": 39.0438, "longitude": -77.4874, "timezone": "America/New_York"
},
"connection": { "type": "datacenter", "shared": false, "dynamic": false, "abuseVelocity": "none" },
"hosting": { "isHosting": true, "provider": "Amazon AWS", "service": "AMAZON", "region": "us-east-1", "source": "official-ranges" },
"threats": {
"isTor": false, "recentAbuse": false,
"isVpn": false, "vpnProvider": null,
"isProxyOrVpnLikely": true
},
"scraping": {
"generalWeb": "medium",
"googleSearch": "high",
"amazon": "high",
"antiBotProtected": "high",
"socialMedia": "very_high",
"recommendedUse": false,
"recommendations": ["Fine for sites without anti-bot protection, public APIs and cheap high-volume jobs. For Google, Amazon, Cloudflare-protected sites or social media, use residential or mobile proxies."]
},
"reasons": ["Official Amazon AWS range: flagged as datacenter by every anti-bot system (-45)"]
}

For a commercial VPN exit, threats.isVpn is true and threats.vpnProvider names the provider (for example "Private Internet Access VPN"), with a lower score and a VPN-specific recommendation.

Shortened for readability. Each result also includes network, hostname, the full threats object and checkedAt. Risk levels are low, medium, high and very_high.

๐Ÿงฎ How the score works

No black box. Every IP starts at 100, and points are removed for each risk signal. Each deduction appears in reasons.

SignalPenalty
Botnet C2 server (abuse.ch Feodo Tracker)โˆ’80
Spamhaus DROP rangeโˆ’70
Tor exit nodeโˆ’60
Recently reported for attacks or bot activity (2+ feeds / 1 feed)โˆ’55 / โˆ’40
Spamhaus ASN-DROP networkโˆ’50
Official cloud provider rangeโˆ’45
Other hosting / datacenter networkโˆ’35
Unknown network ownerโˆ’35
Commercial VPN exit (confirmed / likely)โˆ’25 / โˆ’15
Server-style hostname on a non-hosting networkโˆ’10
Corporate or institutional networkโˆ’10
No reverse DNS record (when reverseDns is on)โˆ’5

Grades: A โ‰ฅ 85 ยท B โ‰ฅ 70 ยท C โ‰ฅ 50 ยท D โ‰ฅ 30 ยท F < 30.

recommendedUse is true only for clean residential, mobile or business IPs scoring 70 or more.

๐Ÿ’ฐ Pricing

$0.90 per 1,000 IPs checked. That's it.

  • Duplicates, invalid entries and private or reserved IPs are free.
  • Set a maximum cost per run and you will never pay more.
  • Real-time API calls also include standard Apify platform usage.

โ“ FAQ

How do I know if my proxy is residential or datacenter? Check the type field. hosting.source tells you how a datacenter was detected: an official cloud range, a known hosting network, or the network's name.

Do I need to share my proxy credentials? No. Only the IP address is analyzed. Credentials in pasted proxy lines are ignored and never used.

Can it detect VPNs? Yes. Private Internet Access, NordVPN and Mullvad exits are named in threats.vpnProvider: confirmed when the exact IP is a known server, likely when it shares its /24. For any other VPN or proxy, isProxyOrVpnLikely is true whenever the IP sits on a hosting network, a Tor exit or a proxy-style hostname.

Does it test my proxies against Google or Amazon? No. The block risk is an estimate based on how anti-bot systems treat each IP type and reputation signal. Your actual success also depends on request rate, headers and browser fingerprint. In return, checks are instant and never burn your proxy bandwidth.

Why do mobile IPs score so well? Mobile carriers share each IP between many real users (CGNAT). Websites avoid banning them because they would block real customers too.

What do shared and dynamic mean? shared: true means many users exit through the same IP (mobile CGNAT, VPN, Tor). dynamic: true means the hostname points to a rotating consumer address. null means the signal could not be determined reliably. We never guess.

How fresh is the data? Tor exits refresh every hour, attack feeds every 6 hours, Spamhaus and VPN server lists every 12 hours, cloud ranges daily and geolocation weekly.

๐Ÿ“š Data sources

Public, regularly refreshed sources only:

  • ASN, country and city: DB-IP Lite (CC BY 4.0). City-level location is approximate, as with any IP geolocation database.
  • Official IP ranges from AWS, Google Cloud, Oracle Cloud, Cloudflare, Fastly, DigitalOcean and Akamai Linode
  • Official Googlebot and Bingbot ranges from Google and Microsoft
  • Server lists published by Private Internet Access, NordVPN and Mullvad
  • Tor Project exit list
  • Spamhaus DROP and ASN-DROP
  • abuse.ch Feodo Tracker
  • blocklist.de, CINS Army, Emerging Threats and GreenSnow attack feeds

๐Ÿค Support

Found an IP that looks misclassified, or need a feature? Open an issue in the Issues tab. Include the IP and what you expected, and it will be looked into.


IP geolocation and ASN data by DB-IP, licensed under CC BY 4.0.