# Open source TheirStack alternative: looot-signals

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. Watch for hiring, funding, news and leadership triggers and get a dated feed with evidence.

## Short answer

looot-signals is an MIT-licensed web app and CLI where you define triggers such as hiring a role, raising a round or a new head of sales. It pulls matching companies through looot, removes duplicates and shows a dated feed with an evidence link per signal. The code is open source. The data is paid per looot call.

## What it does

You write triggers in a YAML file or in the web app. A trigger has a type (hiring, funding, news or leadership), keywords or roles, an age limit and a row limit. Each run pulls matching companies, dedupes them and keeps a dated feed with an evidence link on every signal.

The CLI runs the same file headless and writes only the signals that are new since the last run, as JSON, CSV and markdown. The web app exports the current filter as CSV, and a webhook receives the new signals of a run, signed with a secret you set.

Every call has a stable idempotency key, so running the same trigger twice in one day replays the stored run and does not charge twice.

This is the job that products such as TheirStack and Harmonic do.

## Commands

git clone https://github.com/loootai/looot-signals && cd looot-signals
npm install --ignore-scripts
npm run demo
npm run signals -- --demo --out signals-out
cp triggers.example.yaml triggers.yaml
npm run signals -- --dry-run
export LOOOT_TOKEN=...
npm run signals -- --cap 1 --out signals-out

## Facts

- Job: Watch for hiring, funding, news and leadership triggers and get a dated feed with evidence.
- License: MIT
- Language: TypeScript
- Needs: Node.js 22.12 or newer
- Needs: A looot token with the scopes runs.execute, catalog.read, runs.read and usage.read, for real runs only
- Needs: A funded looot balance, for real runs only
- Needs: A webhook URL, optional
- Demo mode: Yes. npm run demo and the CLI --demo flag use made-up companies. They need no token and cost nothing. Evidence links in demo mode go nowhere on purpose.
- Repository: https://github.com/loootai/looot-signals

## Endpoints it calls

- anyapi: anyapi-run-linkedin-jobs-thin (jobs_search), Hiring by job title
- theirstack: theirstack-jobs-search (jobs_search), Hiring by words in the job ad
- predictleads: predictleads-discover-financing-events (discover_financing-events), Funding rounds by stage
- serper: serper-news (news_search), News and leadership changes from headlines
- signalbase: signalbase-signals-job-changes (people_job_changes), Leadership changes from a structured job-change feed

## What it does not do

- It has no investor or person-level data such as founders, board members or investor graphs. Funding means financing events only.
- News headlines carry no structured company. The company is a guess from the headline and is empty when the pattern does not fit.
- Hiring by keyword needs the job-ad text source. Keywords with the job-title source are an error.
- Response parsing was written from provider documentation and fixtures. The README says it was not checked against a recorded paid response, and the example trigger file was priced only as a quote.
- Some sources cap a trigger at 25 rows per call.

## Run it with an agent

Use looot to watch for new hiring, funding and news signals on the triggers in my file. Read https://looot.ai/skill.md first. Then clone https://github.com/loootai/looot-signals, copy triggers.example.yaml, run its dry run and show me the quote and the cap. Run it for real only after I say yes, and report the new signals with their evidence links.

## What does looot-signals do?

It runs triggers you define, such as hiring a role, raising a round or appointing a head of sales, through looot. It dedupes the results and shows a dated feed with an evidence link on each signal.

## Is looot-signals 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.

## What kinds of trigger can I set?

Four types: hiring, funding, news and leadership. Each type has its own data sources, and you set keywords or roles, funding stages, a country, a maximum age and a row limit.

## 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. Some are priced per result, so the quote assumes the row limit and the real charge is usually lower.

## Can I send the signals somewhere?

Yes. The web app exports a CSV, and the CLI can post new signals to a webhook as JSON, signed with a secret you choose. Only https URLs are accepted, plus http on localhost.

## What does it not do?

It has no investor or person-level data, and news signals guess the company from the headline. Its parsers were written from documentation and fixtures and the README says no real response was checked.

## Can I try it without a looot account?

Yes. npm run demo and the CLI --demo flag need no token. 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 with a dry run, runs with a cap and reports new signals with evidence links.

## Related

- /open-source-alternatives
- /best/serp-api
- /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.
