O firmă nouă în registru, o denumire nouă, un sediu mutat sau o formă juridică schimbată marchează adesea momentul în care o firmă începe să cumpere. API-ul urmărește conturile din CRM, îți trimite modificarea din Registrul Comerțului (ONRC) și listează firmele apărute în registru. Doar la nivel de firmă, fără datele personale ale administratorilor.
Pentru România, API-ul înregistrează apariția unei firme noi în registru și modificările de denumire, formă juridică, sediu social și status. Fiecare primește un event_type:
| Modificare | event_type | De ce contează pentru vânzări |
|---|---|---|
| Firmă nouă în registru | new_incorporation | O firmă nouă are nevoie de bancă, contabil, asigurări, software și spațiu |
| Denumire nouă | name_change | Un rebranding redeschide contractele, facturarea și sistemele |
| Formă juridică nouă | legal_form_change | O transformare schimbă contractele și adesea nevoile firmei |
| Sediu social mutat | address_change | Sediu nou: amenajări, servicii, furnizori locali. Poate fi însă doar o adresă de domiciliere, nu un birou |
| Dizolvare, lichidare, reorganizare, insolvență, faliment | dissolution, liquidation, insolvency | Oprește vânzarea, protejează factura și curăță CRM-ul |
Capitalul social nu se publică pentru România, deci nu există evenimente capital_change. Fiecare eveniment poartă previous_value și new_value, ca să vezi ce s-a schimbat fără un al doilea apel.
Sursa ONRC se citește lunar, iar o schimbare apare odată cu citirea lunară. Un eveniment este datat din ziua citirii care îl vede prima dată (event_date), nu din ziua în care schimbarea a fost înregistrată la ONRC; istoricul începe cu prima încărcare a datelor, din octombrie 2026. O listă goală înseamnă doar că nu s-a văzut încă nicio modificare.
Găsește o singură dată înregistrarea fiecărui cont, abonează-l cu POST /monitor și păstrează id-ul din CRM ca label: se întoarce în fiecare alertă. Abonarea nu consumă credite și vizează doar ce se întâmplă după ea; trecutul unei firme îl citești cu GET /company-events/search?country=RO&company_number=5022670 (2 credite).
import requests
BASE = 'https://api.prometiam.com/functions/v1/risk-api'
H = {'Authorization': 'Bearer rk_live_...'}
# Conturile țintă, cum le ține CRM-ul: CUI și id-ul din CRM
conturi = [('5022670', 'crm-1001'), ('2816464', 'crm-1002')]
for cui, crm_id in conturi:
r = requests.get(f'{BASE}/companies/search', headers=H,
params={'country': 'RO', 'company_number': cui})
r.raise_for_status()
gasite = r.json()['data']
if not gasite:
continue
m = requests.post(f'{BASE}/monitor', headers=H, json={
'company_id': gasite[0]['id'],
'country': 'RO',
'label': crm_id, # se întoarce în fiecare alertă
'events': ['corporate_event', 'status_change', 'dissolution'],
'webhook_url': 'https://example.com/hooks/prometiam',
})
m.raise_for_status()
secret = m.json()['data']['webhook_secret'] # apare o singură dată: păstrează-l
Fiecare alertă ajunge semnată. Antetul X-Prometiam-Signature conține sha256= și HMAC-SHA256 al corpului, calculat cu webhook_secret, pe care POST /monitor îl returnează o singură dată. Verifică semnătura înainte să creezi sarcina pentru agentul de vânzări; un răspuns 2xx confirmă primirea, altfel livrarea se reîncearcă.
import hashlib, hmac, json, os
SECRET = os.environ['PROMETIAM_WEBHOOK_SECRET'].encode() # webhook_secret de la POST /monitor
def alerta(corp: bytes, semnatura: str) -> int:
"""corp = corpul brut al cererii; semnatura = antetul X-Prometiam-Signature."""
calculata = 'sha256=' + hmac.new(SECRET, corp, hashlib.sha256).hexdigest()
if not hmac.compare_digest(semnatura, calculata):
return 401
a = json.loads(corp)
# a['label'] = id-ul din CRM, a['alert_type'], a['company']['name'], a['event_date'];
# la corporate_event: a['detail'] = {'event_type': 'name_change', 'previous_value': ..., 'new_value': ...}
... # creează sarcina pentru proprietarul contului a['label']
return 204
Webhook-urile sunt incluse în fiecare plan. Alertele se citesc și cu GET /monitor (abonările tale și ultimele 50 de alerte), deci un job nocturn poate ține locul webhook-ului. Perioada de probă urmărește 3 firme, Starter 25, Professional 250 și Scale 2.500.
Fără nume și fără CUI, același apel este fluxul de evenimente al țării: tot ce s-a văzut în registru, de la cel mai nou la cel mai vechi, filtrat cu event_type. date_from este implicit cu 7 zile în urmă și poate merge cel mult 31 de zile înapoi (o dată mai veche este refuzată cu 400). Un apel costă 2 credite pentru până la 100 de evenimente, iar pagina următoare se cere cu next_cursor.
# Firmele apărute în registru în ultimele 30 de zile, cele mai noi primele (100 de evenimente pe apel) # pe macOS: date -v-30d +%F în loc de date -d '30 days ago' +%F curl "https://api.prometiam.com/functions/v1/risk-api/company-events/search?country=RO&event_type=new_incorporation&date_from=$(date -d '30 days ago' +%F)&limit=100" \ -H 'Authorization: Bearer rk_live_...'
Fiindcă sursa se citește lunar, intervalul implicit de 7 zile poate întoarce o listă goală între două citiri; de aceea exemplul pornește de acum 30 de zile. Un job frecvent reține cel mai recent event_date văzut, reia de la el și deduplică după id-ul evenimentului. Fluxul privește cel mult 31 de zile înapoi, deci rulează-l măcar o dată pe lună.
founded_after listează firmele înființate de la o dată încoace, fără nume, de la cea mai nouă la cea mai veche: până la 100 de firme pe apel, la 1 credit, cu next_cursor pentru pagina următoare. Înregistrarea are founding_date, județul în region, localitatea în city și forma juridică în legal_form.
# Firmele înființate de la 15 august, cele mai noi primele (100 pe apel) curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=RO&founded_after=2026-08-15&limit=100' \ -H 'Authorization: Bearer rk_live_...'
Serverul filtrează doar după data înființării: un cnae= este refuzat cu 400. Codurile CAEN sunt activitățile autorizate ale firmei și stau în registry_details.caen_codes, iar activity_code apare doar când firma are una singură, deci filtrezi în codul tău. Un cod din listă arată că firma poate desfășura activitatea, nu că aceasta este activitatea ei principală.
def noi_in_it(de_la):
"""Firmele înființate de la o dată, cu cel puțin un cod CAEN 62 (IT) autorizat (folosește requests, BASE și H de mai sus)."""
cursor = None
while True:
p = {'country': 'RO', 'founded_after': de_la, 'limit': 100}
if cursor:
p['cursor'] = cursor
r = requests.get(f'{BASE}/companies/search', headers=H, params=p)
r.raise_for_status()
corp = r.json()
for f in corp['data']:
coduri = (f.get('registry_details') or {}).get('caen_codes') or []
if any(c.startswith('62') for c in coduri):
yield f['company_number'], f['company_name'], f['region']
cursor = corp['pagination']['next_cursor']
if not cursor:
break
meta.data_as_of arată data la care se referă datele; firmele înregistrate după ea apar la citirea următoare, deci verifică-l înainte să presupui că „ultima săptămână” conține firme. Fiecare pagină de 100 de firme costă 1 credit: limitează de_la la perioada de care ai nevoie.
GET /vat/RO....Monitorizarea nu consumă credite: planul stabilește câte firme urmărești (3 în perioada de probă, 25 în Starter, 250 în Professional și 2.500 în Scale; webhook-urile sunt incluse în fiecare plan). O căutare de firmă costă 1 credit, iar o căutare de evenimente sau un apel la fluxul țării 2 credite; erorile nu costă nimic. În perioada de probă, căutările de evenimente (inclusiv fluxul țării) au o limită de 25 de apeluri pe lună; de la Starter nu mai există această limită. Starter costă 9,99 EUR pe lună și include 1.000 de credite, Professional 29,99 EUR și 10.000 de credite, Scale 99,99 EUR și 50.000 de credite. Perioada de probă gratuită durează 14 zile și include 500 de credite: este necesar un card, în timpul probei nu se încasează nimic, apoi continuă planul Starter (9,99 EUR pe lună), dacă nu anulezi. Vezi prețurile.
Contains data from the National Trade Register Office (ONRC), CC BY 4.0
Începe perioada de probă gratuită de 14 zile · Documentația API
Perioada de probă durează 14 zile și include 500 de credite. Cardul este necesar, dar nu se încasează nimic în timpul probei; apoi continuă planul Starter (9,99 EUR pe lună), dacă nu anulezi.