Package Information
Documentation
n8n-nodes-linkedin-scraper
An n8n community node for the InNotes LinkedIn scraper microservice
(https://scraper.innotes.me, hardcoded in LinkedinScraper.node.ts). It
exposes job search, job details, and company follower counts.
Installation
Published to NPM as the community node package n8n-nodes-linkedin-scraper
(package.json, .github/workflows/publish-linkedin-scraper-node.yml).
Build from source (engines in package.json: node >= 18.10, yarn >= 1.22.0):
yarn install
yarn build
Credentials
This node defines no credential of its own. It uses the InNotes API
credential (inNotesApi, n8n_node/credentials/InNotesApi.credentials.ts) from
the n8n-nodes-innotes
package, and reads only its Bearer Token (token) — the node throwsBearer token is missing from InNotes API credentials if it is empty.
Resources
Jobs → Search (POST /jobs/search, 90-minute timeout). Comma-separated job
titles and locations, Max Results (default 500, max 2000), Include jobs.ch
(default on), Time Range (r86400 / r604800 / r2592000, default past 24
hours), plus company and keyword blacklists.
The node sends no cookies at all. JobSearchRequest.cookies defaults to
empty (scraper_service/app/schemas.py) and the scraper then fetches the
caller's session itself with the same Bearer token
(search_jobs → fetch_session_cookies, scraper_service/app/routes/api.py).
Job → Details (POST /jobs/details/batch, 15-minute timeout per batch).
Takes a Job URL (LinkedIn or jobs.ch) per input item; all items are collected
and sent in chunks of 30, max_concurrent: 5, max_retries: 7, with results
mapped back to their original item order. A URL not starting with http is
returned as a failed result rather than sent.
Company → Followers (POST /companies/followers/batch, 10-minute timeout
per batch). Same batching: chunks of 30, results mapped back by index.
Errors
A 401/403 reaching the outer handler is reported as "LinkedIn session expired.
Please visit LinkedIn in a browser with the InNotes extension enabled to renew
your session." — and it always throws: that check runs beforethis.continueOnFail(). Continue On Fail only changes non-auth errors, which
are emitted as { error, itemIndex } instead of throwing.
Company → Followers never produces that message. The Job → Details batch
catch re-throws on 401/403 so it reaches the outer handler; the followers batch
catch does not, so every batch failure — auth included — becomes a per-item{ follower_count: 0, source: 'error', success: false, error: 'Batch request failed: …' }.
Development
yarn install
yarn lint
yarn test
yarn build
See BUILD.md. Publishing is automated; do not npm publish by hand.
License
MIT.