## TL;DR
LinkedIn 999 means the request was flagged as automated; retrying hammers the same defense and the block widens to the whole subnet. Treat 999 as a hard stop, cool the infrastructure down, and route enrichment through legitimate channels.

```text
enrichment agent retried linkedin 999 error and got the whole subnet rate limited
```

## Use this when
- LinkedIn returns 999 to the enrichment agent.
- The 999 spreads from one IP to the whole subnet.
- Retry storms make the block longer each time.

## Not for this skill when
- LinkedIn API 429s on official endpoints, which document their limits.
- Login challenges on real user accounts.
- Sales Navigator export limits.

## Steps
1. Kill the retry loop the moment the first 999 appears; every retry extends the block. Verify: no requests leave for LinkedIn for at least 24 hours.
2. Audit the retry code: 999 must be a circuit-breaker trip, not a retryable status. Verify: a test 999 opens the breaker and pages someone.
3. Cool down the whole subnet, not just the flagged IP; LinkedIn blocks ranges. Verify: a single probe from a clean IP in the same range confirms the range scope.
4. Reduce request fingerprints: lower concurrency, realistic headers, human pacing. Verify: surviving requests stay under a handful per minute per IP.
5. Move enrichment to legitimate sources: official APIs, data providers, or user-supplied profiles. Verify: the pipeline enriches without touching LinkedIn's web tier.

## Variant phrasings
### linkedin 999 error scraping
Common phrasing of the block.
### linkedin 999 subnet blocked
The spread-angle search.
### linkedin 999 retry backoff
The retry-angle search.

Compatibility: Web-tier requests to linkedin.com; the official LinkedIn API is a separate system with its own limits.

## Why it happens
999 is LinkedIn's bot-mitigation response, and its defenses are range-aware: hammering from one IP teaches it the whole subnet is hostile. Retrying a 999 is the worst possible response because each retry is fresh evidence of automation.

## Edge cases / pitfalls
- 999 pages are sometimes served with a 200 status; detect the body, not just the code.
- Residential proxy rotation after a 999 just moves the flag to the new IPs.
- Enrichment vendors exist precisely because direct scraping ends this way; price that in.
- Do not test recovery with a burst; one probe, then wait.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_-qb_ddf46F2DUrWHLG7krQ
