Competitive Signals lets you build a watchlist of companies and topics, then automatically monitors them for activity that matters to your product. When a competitor launches a feature, posts a surge of engineering jobs, or issues a press release, ManticScore detects it, generates an AI insight explaining its relevance, and scores it by how closely it relates to your market. You can monitor any company by domain, configure crawl frequency, and trigger immediate crawls when you need fresh data.
Adding companies to your watchlist
Search for companies to add
Before adding a company, use the discovery endpoint to search by keyword and see which are already on your watchlist:
curl --request GET \
--url 'https://api.manticscore.com/signals/companies/discover?q=fintech+invoicing&limit=10' \
--header 'Authorization: Bearer <token>'
{
"companies": [
{
"name": "FreshBooks",
"domain": "freshbooks.com",
"description": "Cloud accounting software for small businesses and freelancers",
"already_added": false
}
],
"query": "fintech invoicing"
}
Add a company
Company domain (e.g. freshbooks.com). When provided, ManticScore automatically creates a monitor and enriches the company profile.
relationship
string
default:"watchlist"
Relationship type. Currently watchlist.
Industry sector for context, e.g. "fintech" or "productivity".
curl --request POST \
--url https://api.manticscore.com/signals/companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "FreshBooks",
"domain": "freshbooks.com",
"relationship": "watchlist",
"sector": "fintech"
}'
{
"company": {
"id": "f6a7b8c9-...",
"name": "FreshBooks",
"domain": "freshbooks.com"
}
}
Viewing signals
List all signals
Fetch signals across your entire watchlist, or filter by company and type:
curl --request GET \
--url 'https://api.manticscore.com/signals?limit=50' \
--header 'Authorization: Bearer <token>'
Filter by company and signal type:
curl --request GET \
--url 'https://api.manticscore.com/signals?company_id=f6a7b8c9-...&signal_type=product_launch&limit=20' \
--header 'Authorization: Bearer <token>'
Signal shape
UUID of the company this signal belongs to.
Type of signal, e.g. product_launch, job_posting, press_release, pricing_change.
Short title describing the signal.
A factual summary of what was detected.
AI-generated interpretation of why this signal is relevant to your market.
Relevance score from 0 to 1. Higher scores indicate stronger relevance to your product space.
The URL where this signal was detected.
ISO 8601 timestamp of when the signal was first detected.
Display name of the company.
Logo URL for the company, if available.
Company profiles
Get a full company profile including a 30-day signal summary:
curl --request GET \
--url https://api.manticscore.com/signals/companies/f6a7b8c9-... \
--header 'Authorization: Bearer <token>'
The response includes a signal_summary object:
{
"signal_summary": {
"total_30d": 12,
"threats": 3,
"opportunities": 5,
"recent_7d": 4
}
}
Threats are signals that suggest a competitor is moving into your space or improving a capability that could hurt you. Opportunities are gaps or missteps you can take advantage of.
Competitive position score
Get an aggregate score that reflects the overall health and activity of your competitive intelligence:
curl --request GET \
--url https://api.manticscore.com/signals/score \
--header 'Authorization: Bearer <token>'
{
"score": 75,
"signal_count": 42,
"recent_count": 12
}
A higher score reflects more active monitoring coverage and more recent signals.
Managing monitors
A monitor is a recurring crawl job attached to a company. When you add a company with a domain, ManticScore creates a monitor automatically. You can also create them manually and configure the crawl frequency.
List monitors
curl --request GET \
--url https://api.manticscore.com/signals/monitors \
--header 'Authorization: Bearer <token>'
Create a monitor
curl --request POST \
--url https://api.manticscore.com/signals/monitors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"company_id": "f6a7b8c9-...",
"crawl_urls": [
"https://freshbooks.com/blog",
"https://freshbooks.com/changelog"
],
"crawl_frequency": "daily"
}'
crawl_frequency accepts daily or weekly.
Don’t wait for the scheduled crawl — trigger one now:
curl --request POST \
--url https://api.manticscore.com/signals/monitors/monitor_uuid_here/run \
--header 'Authorization: Bearer <token>'
{"queued": true, "monitor_id": "monitor_uuid_here"}
Use immediate crawls when a competitor makes a major announcement and you want signals surfaced right away rather than waiting for the next scheduled run.
Signal streaming via WebSocket
For real-time signal delivery as crawls complete, subscribe to the signal_crawl and company_enrich channels on the WebSocket endpoint. This is useful for building live dashboards or triggering automations the moment a signal is detected.