Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Cerved API Entity Search

See more Cerved Examples

Perform searches on a Subject, known indifferently, the Fiscal Code, VAT number or Name, and to obtain basic information of the Subject.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.StringBuilder,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  sbResponseBody: TStringBuilder;
  jResp: TJsonObject;
  respStatusCode: Integer;
  dati_anagraficiId_soggetto: Integer;
  dati_anagraficiDenominazione: string;
  dati_anagraficiCodice_fiscale: string;
  dati_anagraficiPartita_iva: string;
  dati_anagraficiIndirizzoDescrizione: string;
  dati_anagraficiIndirizzoCap: string;
  dati_anagraficiIndirizzoCodice_comune: string;
  dati_anagraficiIndirizzoDescrizione_comune: string;
  dati_anagraficiIndirizzoCodice_comune_istat: string;
  dati_anagraficiIndirizzoProvincia: string;
  dati_anagraficiIndirizzoDescrizione_provincia: string;
  dati_attivitaCodice_ateco: string;
  dati_attivitaAteco: string;
  dati_attivitaCodice_stato_attivita: string;
  dati_attivitaFlag_operativa: Boolean;
  dati_attivitaCodice_rea: string;
  dati_attivitaCompany_formCode: string;
  dati_attivitaCompany_formDescription: string;
  dati_attivitaCompany_formCompany_form_class: string;
  dati_paEnte: Boolean;
  dati_paFornitore: Boolean;
  dati_paPartecipata: Boolean;
  dati_anagraficiDt_nascita: string;
  peopleTotalNumber: Integer;
  companiesTotalNumber: Integer;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  Implements the following CURL command:

  //  curl -X GET \
  //    https://api.cerved.com/cervedApi/v1/entitySearch/live?testoricerca=test \
  //    -H 'accept: application/json' \
  //    -H 'apikey: ********************************'

  //  Use the following online tool to generate HTTP code from a CURL command
  //  Convert a cURL Command to HTTP Source Code

  http.SetRequestHeader('accept','application/json');
  //  Note: Your apikey is your Consumer Key
  http.SetRequestHeader('apikey','********************************');

  sbResponseBody := TStringBuilder.Create;
  success := http.QuickGetSb('https://api.cerved.com/cervedApi/v1/entitySearch/live?testoricerca=test',sbResponseBody);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  jResp := TJsonObject.Create;
  jResp.LoadSb(sbResponseBody);
  jResp.EmitCompact := False;

  WriteLn('Response Body:');
  WriteLn(jResp.Emit());

  respStatusCode := http.LastStatus;
  WriteLn('Response Status Code = ' + respStatusCode);
  if (respStatusCode >= 400) then
    begin
      WriteLn('Response Header:');
      WriteLn(http.LastHeader);
      WriteLn('Failed.');
      Exit;
    end;

  //  Sample JSON response:
  //  (Sample code for parsing the JSON response is shown below)

  //  {
  //    "peopleTotalNumber": 1,
  //    "companiesTotalNumber": 49,
  //    "companies": [
  //      {
  //        "dati_anagrafici": {
  //          "id_soggetto": 12207335,
  //          "denominazione": "ANGELANTONI TEST TECHNOLOGIES S.R.L. IN FORMA ABBREVIATA ATT S.R.L.",
  //          "codice_fiscale": "01234567890",
  //          "partita_iva": "01234567890",
  //          "indirizzo": {
  //            "descrizione": "LOCALITA' CIMACOLLE, 464",
  //            "cap": "06056",
  //            "codice_comune": "PG028",
  //            "descrizione_comune": "MASSA MARTANA",
  //            "codice_comune_istat": "054028",
  //            "provincia": "PG",
  //            "descrizione_provincia": "PERUGIA"
  //          }
  //        },
  //        "dati_attivita": {
  //          "codice_ateco": "265129",
  //          "ateco": "Fabbricazione di altri apparecchi di misura e regolazione, strumenti da disegno, di contatori di elettricita', gas, acqua ed altri liquidi, di bilance analitiche di precisione (incluse parti staccate ed accessori)",
  //          "codice_stato_attivita": "A",
  //          "flag_operativa": true,
  //          "codice_rea": "PG 272575",
  //          "company_form": {
  //            "code": "SR",
  //            "description": "SOCIETA' A RESPONSABILITA' LIMITATA",
  //            "company_form_class": "SC"
  //          }
  //        },
  //        "dati_pa": {
  //          "ente": false,
  //          "fornitore": true,
  //          "partecipata": false
  //        }
  //      },
  //      {
  //        "dati_anagrafici": {
  //          "id_soggetto": 1046896,
  //          "denominazione": "TEST INDUSTRY S.R.L.",
  //          "codice_fiscale": "01234567890",
  //          "partita_iva": "01234567890",
  //          "indirizzo": {
  //            "descrizione": "CORSO VENEZIA, 36",
  //            "cap": "20121",
  //            "codice_comune": "MI146",
  //            "descrizione_comune": "MILANO",
  //            "codice_comune_istat": "015146",
  //            "provincia": "MI",
  //            "descrizione_provincia": "MILANO"
  //          }
  //        },
  //        "dati_attivita": {
  //          "codice_ateco": "265129",
  //          "ateco": "Fabbricazione di altri apparecchi di misura e regolazione, strumenti da disegno, di contatori di elettricita', gas, acqua ed altri liquidi, di bilance analitiche di precisione (incluse parti staccate ed accessori)",
  //          "codice_stato_attivita": "A",
  //          "flag_operativa": true,
  //          "codice_rea": "MI 2579272",
  //          "company_form": {
  //            "code": "SR",
  //            "description": "SOCIETA' A RESPONSABILITA' LIMITATA",
  //            "company_form_class": "SC"
  //          }
  //        },
  //        "dati_pa": {
  //          "ente": false,
  //          "fornitore": true,
  //          "partecipata": false
  //        }
  //      },
  //      {
  //        "dati_anagrafici": {
  //          "id_soggetto": 300632,
  //          "denominazione": "ITW TEST AND MEASUREMENT ITALIA S.R.L.",
  //          "codice_fiscale": "01234567890",
  //          "partita_iva": "01234567890",
  //          "indirizzo": {
  //            "descrizione": "VIA AIRAUDA, 12",
  //            "cap": "10044",
  //            "codice_comune": "TO189",
  //            "descrizione_comune": "PIANEZZA",
  //            "codice_comune_istat": "001189",
  //            "provincia": "TO",
  //            "descrizione_provincia": "TORINO"
  //          }
  //        },
  //        "dati_attivita": {
  //          "codice_ateco": "265129",
  //          "ateco": "Fabbricazione di altri apparecchi di misura e regolazione, strumenti da disegno, di contatori di elettricita', gas, acqua ed altri liquidi, di bilance analitiche di precisione (incluse parti staccate ed accessori)",
  //          "codice_stato_attivita": "A",
  //          "flag_operativa": true,
  //          "codice_rea": "TO 379571",
  //          "company_form": {
  //            "code": "SU",
  //            "description": "SOCIETA' A RESPONSABILITA' LIMITATA CON UNICO SOCIO",
  //            "company_form_class": "SC"
  //          }
  //        },
  //        "dati_pa": {
  //          "ente": false,
  //          "fornitore": true,
  //          "partecipata": false
  //        }
  //      }
  //    ],
  //    "people": [
  //      {
  //        "dati_anagrafici": {
  //          "id_soggetto": 333333333,
  //          "denominazione": "ROBUSTELLI TEST ALESSANDRO",
  //          "dt_nascita": "08-22-1978",
  //          "codice_fiscale": "RBSSMMMMMMMMMMMM",
  //          "indirizzo": {
  //            "descrizione": "VIA ALESSANDRINI, 22",
  //            "cap": "26027",
  //            "codice_comune": "CR084",
  //            "descrizione_comune": "RIVOLTA D'ADDA",
  //            "codice_comune_istat": "019084",
  //            "provincia": "CR",
  //            "descrizione_provincia": "CREMONA"
  //          }
  //        }
  //      }
  //    ]
  //  }

  //  Sample code for parsing the JSON response...
  //  Use the following online tool to generate parsing code from sample JSON:
  //  Generate Parsing Code from JSON

  peopleTotalNumber := jResp.IntOf('peopleTotalNumber');
  companiesTotalNumber := jResp.IntOf('companiesTotalNumber');
  i := 0;
  count_i := jResp.SizeOfArray('companies');
  while i < count_i do
    begin
      jResp.I := i;
      dati_anagraficiId_soggetto := jResp.IntOf('companies[i].dati_anagrafici.id_soggetto');
      dati_anagraficiDenominazione := jResp.StringOf('companies[i].dati_anagrafici.denominazione');
      dati_anagraficiCodice_fiscale := jResp.StringOf('companies[i].dati_anagrafici.codice_fiscale');
      dati_anagraficiPartita_iva := jResp.StringOf('companies[i].dati_anagrafici.partita_iva');
      dati_anagraficiIndirizzoDescrizione := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.descrizione');
      dati_anagraficiIndirizzoCap := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.cap');
      dati_anagraficiIndirizzoCodice_comune := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.codice_comune');
      dati_anagraficiIndirizzoDescrizione_comune := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.descrizione_comune');
      dati_anagraficiIndirizzoCodice_comune_istat := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.codice_comune_istat');
      dati_anagraficiIndirizzoProvincia := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.provincia');
      dati_anagraficiIndirizzoDescrizione_provincia := jResp.StringOf('companies[i].dati_anagrafici.indirizzo.descrizione_provincia');
      dati_attivitaCodice_ateco := jResp.StringOf('companies[i].dati_attivita.codice_ateco');
      dati_attivitaAteco := jResp.StringOf('companies[i].dati_attivita.ateco');
      dati_attivitaCodice_stato_attivita := jResp.StringOf('companies[i].dati_attivita.codice_stato_attivita');
      dati_attivitaFlag_operativa := jResp.BoolOf('companies[i].dati_attivita.flag_operativa');
      dati_attivitaCodice_rea := jResp.StringOf('companies[i].dati_attivita.codice_rea');
      dati_attivitaCompany_formCode := jResp.StringOf('companies[i].dati_attivita.company_form.code');
      dati_attivitaCompany_formDescription := jResp.StringOf('companies[i].dati_attivita.company_form.description');
      dati_attivitaCompany_formCompany_form_class := jResp.StringOf('companies[i].dati_attivita.company_form.company_form_class');
      dati_paEnte := jResp.BoolOf('companies[i].dati_pa.ente');
      dati_paFornitore := jResp.BoolOf('companies[i].dati_pa.fornitore');
      dati_paPartecipata := jResp.BoolOf('companies[i].dati_pa.partecipata');
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('people');
  while i < count_i do
    begin
      jResp.I := i;
      dati_anagraficiId_soggetto := jResp.IntOf('people[i].dati_anagrafici.id_soggetto');
      dati_anagraficiDenominazione := jResp.StringOf('people[i].dati_anagrafici.denominazione');
      dati_anagraficiDt_nascita := jResp.StringOf('people[i].dati_anagrafici.dt_nascita');
      dati_anagraficiCodice_fiscale := jResp.StringOf('people[i].dati_anagrafici.codice_fiscale');
      dati_anagraficiIndirizzoDescrizione := jResp.StringOf('people[i].dati_anagrafici.indirizzo.descrizione');
      dati_anagraficiIndirizzoCap := jResp.StringOf('people[i].dati_anagrafici.indirizzo.cap');
      dati_anagraficiIndirizzoCodice_comune := jResp.StringOf('people[i].dati_anagrafici.indirizzo.codice_comune');
      dati_anagraficiIndirizzoDescrizione_comune := jResp.StringOf('people[i].dati_anagrafici.indirizzo.descrizione_comune');
      dati_anagraficiIndirizzoCodice_comune_istat := jResp.StringOf('people[i].dati_anagrafici.indirizzo.codice_comune_istat');
      dati_anagraficiIndirizzoProvincia := jResp.StringOf('people[i].dati_anagrafici.indirizzo.provincia');
      dati_anagraficiIndirizzoDescrizione_provincia := jResp.StringOf('people[i].dati_anagrafici.indirizzo.descrizione_provincia');
      i := i + 1;
    end;



  http.Free;
  sbResponseBody.Free;
  jResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.