Skip to content
airbnb

Troubleshooting

The handful of things that trip people up, and how to fix each one.

Most of these come down to network reality or how Airbnb serves its data, not a bug. Each case maps to an exit code so a script can tell them apart.

A command exits 4

Every live surface sits behind Airbnb's edge bot manager (Cloudflare and DataDome), which classifies a request before the application sees it on IP reputation and TLS fingerprint, and walls datacenter IPs. From a home or mobile network the surfaces usually answer; from a datacenter or a cloud host they hit the wall, and airbnb reports need-auth (exit 4) rather than pretending the result was empty. There is no official API to fall back to, so the only remedy is to run from a residential or mobile network. airbnb does not forge a TLS fingerprint and does not rent or rotate IPs to get past the edge. See what anonymous access reaches.

The ref id and ref url commands are not affected; they resolve offline with no request.

Requests start failing or returning 429

Airbnb rate-limits like any public site. airbnb already paces requests and retries the transient failures, but a hard limit still means backing off, and it reports rate-limited (exit 5). Raise the delay between requests with --rate (for example --rate 1s) and retry later. A burst of 429 or 5xx responses is the site asking you to slow down, not a defect.

A reference is not found

An unknown id, a removed listing, or a reference airbnb cannot classify reports not-found (exit 6). Check that the id is spelled the way Airbnb uses it, and that the listing still exists in a private browser window before assuming it is gone.

A listing or search comes back with no price

A nightly price only exists for specific dates, so room and search leave the price empty unless you give --checkin and --checkout (with --adults and --children). Add the dates and the price fills in. The price and its currency are read together, so each record carries an explicit currency field alongside the number; set --currency and --locale to ask for another.

The binary is not on your PATH

go install puts the binary in $(go env GOPATH)/bin (usually ~/go/bin), and a release archive leaves it wherever you unpacked it. If your shell cannot find airbnb, add that directory to your PATH. See installation.

Seeing what airbnb actually did

When something behaves unexpectedly, -v adds per-request detail so you can see the URLs it hit and the responses it got. That is usually enough to tell the edge wall apart from a rate limit apart from a genuinely empty result. Add --no-cache to force a fresh fetch when you suspect a stale cached page.