# Open source Gojiberry alternative: looot-warm-leads

The code is MIT open source. The data is not free and not self-hosted: every real run calls looot and pays per call at the catalog price shown before the run. Find warm B2B leads from public LinkedIn intent signals and rank them.

## Short answer

looot-warm-leads is an MIT-licensed Next.js app and CLI. You name competitors, creators and topics. It finds people who commented, reacted or posted, reads their profiles, scores them against your ICP with every signal explained and drafts a first message. The code is open source. The data is paid per looot call.

## What it does

It lists recent posts from competitor pages, creators and keywords, then reads comments and reactions on the top posts. Candidates are ranked, and the best few get a profile and company read. New-role, hiring and funding triggers are optional.

Each lead gets a score from 0 to 100: fit points plus intent points. The breakdown names every signal, the provider that supplied it, its weight, the date, the cost and a link to check it.

You pick leads, see the quote for the email lookup first, and get a verified work email. It drafts a first message that refers to the real signal and exports CSV or an Instantly import file. A daily GitHub Actions workflow is included.

This is the job that products such as Gojiberry do.

## Commands

git clone https://github.com/loootai/looot-warm-leads && cd looot-warm-leads
npm ci --ignore-scripts
npm run demo
npm run warm -- run --demo
npm run warm -- run --dry-run --config examples/sources.example.json
export LOOOT_TOKEN=...
npm run warm -- run --max-spend 1 --since-last
npm run warm -- email --top 5 --dry-run
npm run warm -- export --format instantly

## Facts

- Job: Find warm B2B leads from public LinkedIn intent signals and rank them.
- License: MIT
- Language: TypeScript
- Needs: Node.js 22.13 or newer
- Needs: A looot token with the scopes runs.execute, catalog.read, runs.read and usage.read, for real runs and email lookups
- Needs: A funded looot balance, for real runs
- Needs: A Unipile account, only if you use the optional LinkedIn sending
- Demo mode: Yes. npm run demo and npm run warm -- run --demo use invented people and companies with a stand-in for looot. They need no token or account and book simulated spend at list price.
- Repository: https://github.com/loootai/looot-warm-leads

## Endpoints it calls

- scrapecreators: scrapecreators-linkedin-company-posts (linkedin_company_posts), Posts of a competitor page
- harvestapi: harvestapi-profile-posts (linkedin_person_posts), Posts of a creator
- harvestapi: harvestapi-post-search (linkedin_post_search), Posts that match a keyword
- fetchin: fetchin-post-engagement (linkedin_post_engagement), Comments and reactions on a post
- fetchin: fetchin-profile (linkedin_person_profile), Profile: title, role start date, location
- fetchin: fetchin-company (linkedin_company_profile), Company: industry, headcount, site
- predictleads: predictleads-companies-job-openings (jobs_company), Open roles, optional trigger
- predictleads: predictleads-companies-financing-events (company_funding), Funding events, optional trigger
- anysite: anysite-api-linkedin-user-email (people_email_find), Work email lookup
- millionverifier: millionverifier-verify (people_email_verify), Email verification

## What it does not do

- It is a local tool, not a hosted outreach platform. It runs no campaigns and sends no email.
- It does not log in to LinkedIn, use a session cookie or automate a browser. The intent data comes from public-data providers through looot.
- Sending on LinkedIn is optional and goes through your own paid Unipile account. The README says no Unipile call was made when it was written, so that part is unverified.
- LinkedIn engagement data is incomplete. Providers return a sample of commenters and reactors, not all of them, and a reaction date is the post date when the provider gives none.
- Response parsing was written from provider documentation and fixtures. The README says it was not checked against a recorded paid response. A parse that finds nothing is reported as no data, not as a failure.
- State is a JSON file. There is no hosted service, no database and no login, so run it on your machine or behind your own access control.

## Run it with an agent

Use looot to find warm leads from LinkedIn activity around my competitors. Read https://looot.ai/skill.md first. Then clone https://github.com/loootai/looot-warm-leads, set my sources and ICP, run its dry run and show me the quote and the cap. Run it only after I say yes, never send a LinkedIn message for me, and list the hot leads with the signal behind each score.

## What does looot-warm-leads do?

It finds people who commented on or reacted to your competitors' posts, posted about your topic or started a new role. It reads their profiles, scores them against your ICP, finds and verifies work emails and drafts a first message.

## Is looot-warm-leads free?

The code is free under the MIT license. The data is not. Every real run is a set of paid looot calls at the catalog price, quoted before the run. Demo mode and the dry run cost nothing.

## Does it log in to my LinkedIn account?

No. It does not log in to LinkedIn, use a session cookie or automate a browser. Public data comes through looot providers. Optional sending uses your own Unipile account and its hosted sign-in.

## How is a lead scored?

Fit points (title, seniority, industry, location, company size) plus intent points from each signal, each with a weight and a half-life you can edit. The breakdown on a lead names every signal, provider, cost and evidence link.

## What does a run cost?

A run costs the sum of its calls. The table on this page shows the live catalog price of each endpoint. Emails are always quoted separately, and the dry run prints the quote for your sources file.

## What does it not do?

It runs no campaigns, sends no email and does not see every commenter or reactor, because providers return a sample. The README says parsers and the Unipile client were not checked against live services.

## Can I try it without a looot account?

Yes. npm run demo and npm run warm -- run --demo need no token or account. A real run needs a token and a funded balance.

## How do I run it from an agent?

Give your agent the prompt on this page and the setup link https://looot.ai/skill.md. The repo ships a skill that quotes first, never raises the cap on its own and never approves or sends a LinkedIn message for you.

## Related

- /open-source-alternatives
- /mcp/scrapecreators
- /free-tools

## Last read

2026-10-11. Facts come from the repository on GitHub. The price per call is read live from the catalog on the web page.
