## TL;DR
Stop every request on that session the moment the unavailable-profile wall appears. LinkedIn has restricted the session, and every further request deepens the restriction and risks the account. Verify the restriction in a normal browser login, wait it out or appeal it, then resume prospecting with a healthy session at a slower, capped pace.

## The query

```text
linkedin 'this profile is unavailable' mid-scrape  -  agent's session got restricted
```

## Steps

### 1. Halt the scrape job and mark the session dead
Kill the running scrape immediately and flag the session as restricted in the agent's session store so no other job picks it up. Log which profiles were fetched before the wall appeared.

Expected: zero further requests leave the restricted session.

### 2. Verify the restriction in a normal browser login
Log into the same account in a regular browser and open any public profile. If you see a restriction or verification notice, the session restriction is real. If profiles load fine, the block was transient rate-limiting.

Expected: you know whether the account is restricted or just throttled.

### 3. Wait it out or appeal; do not work around it
If restricted, wait for the stated window or submit LinkedIn's appeal. Do not create a new account to dodge it and do not route the scrape through someone else's session. Those moves turn a temporary restriction into a permanent ban.

Expected: the account returns to normal, or you hold an appeal case number.

### 4. Resume on a healthy session at half the previous rate
When the account is clear, resume with a fresh session, per-day profile caps, and jittered delays between requests. Scrape only what the sequence actually needs, not speculative batches.

Expected: profiles load again and no new restriction appears within 48 hours.

### 5. Add a session-health check before every scrape run
Have the agent fetch one known-good profile and look for the restriction signal before starting a batch. On any hit, it fails closed: job paused, operator alerted, session flagged.

Expected: the agent pauses itself on a restricted session instead of hammering it.

## Use this when

- An agent scraping LinkedIn profiles suddenly hits 'this profile is unavailable' on every profile
- The same session worked minutes ago and nothing changed in the code
- Restriction notices appear when logging in manually

## Not for this skill when

- The login hits a 'verify it's you' checkpoint the agent might legitimately solve with operator help
- InMail sends fail for lack of credits
- A first-party API integration returns 401 or 403

## Variant phrasings

### linkedin profile unavailable mid scrape
Same wall, same handling: stop, verify, wait, resume slower.

### linkedin session restricted while scraping profiles
The restriction notice is the explicit version of the same signal. Identical steps apply.

### agent keeps getting profile unavailable on every linkedin page
When it is every page rather than one, it is the session, not the profiles. Treat as a restricted session.

## Why it happens
LinkedIn's abuse detection watches request velocity per session. An agent fetching profiles faster than a human ever could trips it, and the platform answers with a soft wall: every profile renders as unavailable. Continued requests read as bot confirmation, which escalates a temporary throttle into an account restriction.

## Edge cases

- One unavailable profile among many is usually a deleted or private profile, not a restriction. Only treat the all-profiles case as a session problem.
- A restriction can persist across sessions on the same IP or device fingerprint. If a fresh session is restricted instantly, stop and appeal rather than cycling sessions.
- Shared sessions across multiple agents multiply the velocity signal. Give scraping agents their own sessions with their own caps.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_G8u643H6GdbVhE22bWU1Lg
