Market Radar API
Objects

Radar

What an account watches, as lines of chips or as words in countries' calls for tender, and when it is swept.

{
  "id": 37,
  "name": "Competitors and AI",
  "type": "news",
  "folder": { "id": 5, "name": "Competitors" },
  "query": {
    "lines": [
      { "joiner": null, "chips": [
        { "kind": "event", "id": 212, "key": "mergers_acquisitions", "label": "M&A" },
        { "kind": "event", "id": 215, "key": "funding_events", "label": "Funding Events" },
        { "kind": "written", "id": 301, "key": null, "label": "A competitor launching or…" }
      ] },
      { "joiner": "AND", "chips": [
        { "kind": "group", "id": 3, "key": null, "label": "French banks", "member_ids": [91, 92, 93] },
        { "kind": "company", "id": 94, "key": null, "label": "Revolut" }
      ] },
      { "joiner": "NOT", "chips": [
        { "kind": "mute", "id": 230, "key": "stock_analyses", "label": "Stock Analyses" }
      ] }
    ]
  },
  "query_text": "M&A or Funding Events or A competitor launching or… at French banks or Revolut, not Stock Analyses",
  "sources": ["linkedin", "open_web"],
  "custom_source_ids": [12, 14],
  "source_group_ids": [4],
  "cadence": "weekly",
  "window_days": 7,
  "searchable": true,
  "sweeping": false,
  "last_sweep_at": "2026-09-21T06:12:40Z",
  "next_sweep_at": "2026-09-28T06:00:00Z",
  "created_at": "2026-09-14T09:30:02Z"
}
  • folder is the folder the radar lives in. Every radar lives in exactly one.
  • The query is lines of chips. Chips on a line are alternatives (any of them). Lines hold together (AND). A NOT line must not hold. The first line's joiner is null.
  • A chip's kind: event (what happened), topic (what it is about), mute (content to leave out), written (a filter in the account's own words), company, or group, one of the account's company groups. key is the catalogue key, null for a written filter, a company or a group. A group's member_ids are its companies now: the radar follows the group, and each sweep searches its companies as they are then, so a company added to the group is searched from the next sweep with no change to the radar.
  • query_text is the sentence the radar page shows.
  • sources say what the radar reads: open_web, the news the searches find, and linkedin, the posts of its companies' LinkedIn company pages; sorted. It is [] when the radar reads its custom sources alone. custom_source_ids are the account's custom sources it also searches, and source_group_ids the website groups it follows, whose custom sources it searches as they are at each sweep. It searches at most 30 custom sources, each counted once. A radar reads at least one source: the open web, LinkedIn, a custom source or a website group.
  • searchable is false when the radar has nothing to read: neither a company (alone or in one of its groups) nor a written filter left, after a company was deleted, or, reading only linkedin, no company with a LinkedIn company page. It is not swept until it has.
  • sweeping is true while a sweep is queued or running.

A tender radar

A radar of type tenders watches public calls for tender instead of the news. It has countries and words in place of a query, and is swept every day.

{
  "id": 41,
  "name": "Solar carports, France",
  "type": "tenders",
  "folder": { "id": 6, "name": "Public tenders" },
  "countries": ["FRA"],
  "words": [
    { "phrase": "ombrières photovoltaïques", "excluded": false },
    { "phrase": "toiture photovoltaïque", "excluded": false },
    { "phrase": "maintenance", "excluded": true }
  ],
  "query_text": "ombrières photovoltaïques or toiture photovoltaïque not maintenance in France",
  "cadence": "daily",
  "searchable": true,
  "sweeping": false,
  "last_sweep_at": "2026-09-29T06:03:51Z",
  "next_sweep_at": "2026-09-30T06:00:00Z",
  "created_at": "2026-09-24T14:12:09Z"
}
  • countries decide where the radar looks, by ISO 3166 alpha-3 code: France is searched on BOAMP and TED, so it gets every public call from €90,000; any other country of the EU and the EEA on TED, so its calls above the EU thresholds.
  • words: a call matches when its notice has any word that is not excluded, as an exact phrase, with or without accents. An excluded word drops a call when its title has it.
  • searchable is false when every word is excluded.
  • Its calls are read with GET /radars/{id}/tenders, not as signals.

An exchange rate radar

A radar of type rates follows currency pairs against the euro, euro area interest rates, or both, instead of the news. It has pairs and interest_rates in place of a query, and is never swept: its rates are the European Central Bank's, read once a working day for every account.

{
  "id": 44,
  "name": "Caillau Mobility, currencies",
  "type": "rates",
  "folder": { "id": 7, "name": "Markets" },
  "pairs": ["USD", "CNY", "BRL"],
  "interest_rates": ["estr", "aaa_3m"],
  "query_text": "EUR/USD, EUR/CNY, EUR/BRL, €STR, 3-month rate, AAA bonds",
  "created_at": "2026-09-29T15:02:44Z"
}
  • pairs: the currencies it follows, each quoted against the euro (USD for EUR/USD), in the order the radar page shows them. Any of the 29 the ECB publishes.
  • interest_rates: the interest rates it follows, by code, in order; empty when it follows pairs only. Pairs and interest rates together are 1 to 20.
  • Its rates and interest rates are read with GET /radars/{id}/rates.

A price radar

A radar of type commodity_prices follows raw materials instead of the news. It has commodities in place of a query, and is never swept: its prices are read once a day for every account from each commodity's publisher.

{
  "id": 45,
  "name": "Mathevon, raw materials",
  "type": "commodity_prices",
  "folder": { "id": 7, "name": "Markets" },
  "commodities": ["nickel", "cobalt", "brent"],
  "query_text": "Nickel, Cobalt, Brent crude",
  "created_at": "2026-09-30T09:12:05Z"
}
  • commodities: the codes it follows, in the order the radar page shows them: nickel, cobalt, molybdenum, aluminium, copper, zinc, tin, lead, iron_ore, brent, henry_hub, power_fr, ttf, chromium.
  • Its prices are read with GET /radars/{id}/prices.

To create or change a radar, see Radars in the endpoints guide.