← Glossary / ERR_NAME_NOT_RESOLVED

What is ERR_NAME_NOT_RESOLVED?

ERR_NAME_NOT_RESOLVED is a fatal network-layer error indicating that the client's DNS resolver could not translate the target hostname into an IP address. In scraping pipelines, this rarely means the target site is actually down — it almost always points to a proxy node failure, a poisoned DNS cache, or an exhausted local resolver dropping UDP packets under high concurrency.

DNSChromiumProxy FailureNetwork LayerPuppeteer
// 02 — definitions

Lost before
the first byte.

If you can't resolve the IP, you can't open the socket. Here is why DNS fails at scale and how it breaks your pipeline.

Ask a DataFlirt engineer →

TL;DR

ERR_NAME_NOT_RESOLVED happens when a domain name lookup fails. In a local browser, it means your internet is down. In a scraping cluster, it means your proxy node failed its DNS lookup, your local DNS cache is poisoned, or you're hitting rate limits on your upstream resolver.

01Definition & structure

ERR_NAME_NOT_RESOLVED is a Chromium network stack error indicating a complete failure of the DNS resolution process. Before an HTTP request can be sent, the browser must translate the human-readable hostname (e.g., api.example.com) into an IP address. If the configured DNS resolver returns an error, times out, or says the domain doesn't exist, the browser aborts the request immediately.

In a scraping context, this error is rarely caused by the target site actually going offline. It is almost always an infrastructure failure on the scraper's side or the proxy's side.

02Proxy-side vs Client-side resolution

Where the DNS lookup happens dictates how you fix the error:

  • Local Resolution (HTTP Proxies): The scraping server resolves the domain, then connects to the proxy via IP. If this fails, your server's DNS is rate-limited or misconfigured.
  • Remote Resolution (SOCKS5): The scraping server passes the hostname to the proxy, and the proxy's exit node performs the lookup. If this fails, the residential ISP of the exit node is likely blocking the domain or experiencing an outage.
03High-concurrency DNS exhaustion

DNS heavily relies on UDP port 53. When a scraping cluster spins up thousands of concurrent headless browsers, each browser attempts to resolve hostnames independently. This can quickly exhaust the OS's ephemeral port range or trigger UDP flood protection on the local network interface. The result is a cascade of dropped packets, leading to artificial ERR_NAME_NOT_RESOLVED errors even though the upstream DNS server is perfectly healthy.

04How DataFlirt handles it

We treat DNS as a critical path component, not an afterthought. Our infrastructure runs a dedicated, multi-tiered DNS caching layer. When a pipeline requests a URL, our edge resolves the hostname once, caches it globally, and passes the raw IP to the proxy fleet. This completely bypasses the unreliable DNS resolvers of residential ISPs, drops DNS latency to sub-millisecond levels, and virtually eliminates name resolution errors from our pipeline telemetry.

05Did you know: Chromium's negative cache

Chromium implements aggressive internal DNS caching. Crucially, it caches failures (negative caching) for up to 60 seconds. If a flaky proxy causes a single ERR_NAME_NOT_RESOLVED, Chromium will instantly fail all subsequent requests to that domain from that browser context without even attempting another network lookup. To recover, you must either destroy the browser context or launch with specific flags to disable the host resolver cache.

// 03 — the resolution math

Why DNS fails
under load.

DNS resolution is a hidden bottleneck in high-throughput scraping. DataFlirt monitors resolver latency and packet drop rates to prevent artificial timeouts before the HTTP layer is even reached.

DNS Timeout Probability = Ptimeout = 1 − (1pdrop)retries
UDP packet drops compound quickly under high concurrency. Network Reliability Engineering
Concurrency Limit (UDP) = Maxreq = Ephemeral_Ports / TTLcache
Exhausting local ports leads to immediate resolution failures. Linux Network Stack
DataFlirt DNS Cache Hit Rate = Hit_Rate = Local_Resolves / Total_Lookups
Maintained at >0.99 to bypass upstream proxy DNS unreliability. DataFlirt Edge Telemetry
// 04 — the trace

A proxy DNS failure
in real time.

A Puppeteer script attempting to route through a residential proxy pool, failing at the DNS phase before the TCP handshake can even begin.

PuppeteerSOCKS5DNS failure
edge.dataflirt.io — live
CAPTURED
// initializing browser context
proxy.target: "socks5://res.proxy.net:1080"
page.goto: "https://target-ecommerce.com/product/123"

// proxy negotiation
socks5.handshake: success
socks5.connect_cmd: "target-ecommerce.com:443"

// remote DNS resolution (via proxy exit node)
dns.query: A target-ecommerce.com
dns.status: SERVFAIL // exit node ISP blocked lookup

// chromium network stack
net.error: net::ERR_NAME_NOT_RESOLVED
page.status: Navigation failed
pipeline.action: Rotate proxy and retry
// 05 — failure modes

Where the lookup
actually breaks.

Ranked by frequency across DataFlirt's proxy telemetry. Most DNS failures in scraping are infrastructure issues, not target downtime.

DNS FAILURES ·  ·  ·  ·   1.2% of all errors
AVG LATENCY ·  ·  ·  ·    12ms (cached)
UPDATED ·  ·  ·  ·  ·  ·  2026-05-19
01

Proxy exit node DNS failure

ISP level · Residential IP's local ISP fails to resolve the domain
02

Local UDP port exhaustion

Client level · High concurrency exhausts local ephemeral ports
03

Upstream rate limiting

Resolver level · Google/Cloudflare DNS throttling your scraping server
04

Target nameserver outage

Target level · The actual authoritative DNS for the site is down
05

Malformed URL / Typo

Code level · Trailing spaces or invalid characters in the hostname
// 06 — our stack

Resolve locally,

cache aggressively, route globally.

Relying on a proxy provider's default DNS resolver is a recipe for high latency and random ERR_NAME_NOT_RESOLVED spikes. DataFlirt decouples DNS from the proxy layer. We resolve target IPs using our own distributed DNS-over-HTTPS (DoH) infrastructure, cache the records at the edge, and pass direct IP connections to the proxy pool. This eliminates proxy-side DNS failures entirely and shaves 50–150ms off every cold request.

dns-resolution.trace

Live telemetry of a decoupled DNS resolution flow in the DataFlirt edge.

target.domain api.target-site.com
resolver.type DataFlirt DoH Edge
cache.status HITTTL: 280s
lookup.latency 0.8ms
proxy.routing Direct IP passthrough
connection.status TCP Established

Stay ahead of the pipeline

Data engineering
intel, weekly.

Anti-bot shifts, scraping infrastructure updates, dataset delivery patterns, and business outcomes from our pipelines. Short, technical, no fluff.

// 07 — FAQ

Common
questions.

Common questions about DNS failures, proxy resolution, and how to debug Chromium network errors at scale.

Ask us directly →
What is the difference between ERR_NAME_NOT_RESOLVED and ERR_CONNECTION_REFUSED? +
ERR_NAME_NOT_RESOLVED means the client couldn't find the IP address for the domain name. ERR_CONNECTION_REFUSED means the IP was found, but the target server actively rejected the TCP connection attempt on the specified port. One is a DNS failure; the other is a firewall or service failure.
Does rotating proxies fix ERR_NAME_NOT_RESOLVED? +
If the DNS resolution is happening on the proxy exit node (e.g., using SOCKS5 with remote DNS), then yes, rotating the proxy usually fixes it because you get a new exit node with a different ISP and DNS resolver. If the resolution is happening locally on your scraping server, rotating proxies won't help.
How does headless Chrome handle DNS caching? +
Chromium maintains its own internal DNS cache, separate from the OS. By default, it caches successful lookups for 60 seconds and failed lookups for 1 minute. If a proxy fails a lookup once, Chromium will instantly throw ERR_NAME_NOT_RESOLVED for subsequent requests to that domain until the negative cache expires.
Why does this error only happen at high concurrency? +
Standard DNS uses UDP. At high concurrency, your scraping server can exhaust its ephemeral port range or hit UDP packet drop limits at the OS level. Additionally, public resolvers like 8.8.8.8 will aggressively rate-limit your server IP if you send thousands of queries per second.
How does DataFlirt prevent DNS failures at scale? +
We bypass proxy-side DNS entirely. Our edge workers resolve domains using a distributed, highly-available DoH (DNS over HTTPS) cluster, cache the A/AAAA records, and instruct the proxy pool to connect directly to the IP address. This removes the proxy's local ISP from the DNS equation completely.
Should I use Google (8.8.8.8) or Cloudflare (1.1.1.1) for scraping? +
For low volume, they are fine. For high-volume scraping, you will hit their rate limits and experience artificial ERR_NAME_NOT_RESOLVED errors. Production pipelines should run a local caching resolver (like Unbound or CoreDNS) on the scraping cluster to absorb the query volume.
$ dataflirt scope --new-project --target=err_name_not_resolved READY

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off catalogue dump or a continuous feed across millions of records — we scope, build, and operate the pipeline.

hello@dataflirt.com  ·  Bengaluru  ·  IST  ·  typical reply < 4h