PHPackages                             glook/dadata-php-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. glook/dadata-php-sdk

ActiveLibrary[API Development](/categories/api)

glook/dadata-php-sdk
====================

Typed PHP SDK for Dadata API generated from OpenAPI schemas.

1.0.3(3w ago)06MITPHPPHP ^7.4 || ^8.0CI passing

Since May 18Pushed 1w agoCompare

[ Source](https://github.com/glook/dadata-php-sdk)[ Packagist](https://packagist.org/packages/glook/dadata-php-sdk)[ RSS](/packages/glook-dadata-php-sdk/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (5)Dependencies (15)Versions (5)Used By (0)

Dadata Php SDK
==============

[](#dadata-php-sdk)

Typed PHP SDK for [Dadata API](https://dadata.ru/api/) generated from OpenAPI schemas.

The package exposes two generated clients:

- `Glook\Dadata\Generated\Suggestions\Client` for Suggestions API.
- `Glook\Dadata\Generated\Clear\Client` for Cleaner API.

For normal usage, create clients through the package factories instead of wiring HTTP clients and authentication plugins by hand.

Installation
------------

[](#installation)

```
composer require glook/dadata-php-sdk
```

Requirements:

- PHP 7.4 or newer
- `ext-json`
- A PSR-18 HTTP client available through `php-http/discovery`

If your application does not already provide a PSR-18 client, install one explicitly:

```
composer require symfony/http-client
```

Authentication
--------------

[](#authentication)

Dadata requires an API token and a secret key.

The factories add both generated authentication plugins automatically:

```
new AuthenticationRegistry([
    new DadataAuthorizationAuthentication('Token '.$token),
    new DadataSecretAuthentication($secret),
])
```

You only need to pass raw credentials:

```
use Glook\Dadata\DadataClientFactory;

$token = 'Replace with Dadata API key';
$secret = 'Replace with Dadata secret key';

$suggestions = DadataClientFactory::createSuggestionsClient($token, $secret);
$clear = DadataClientFactory::createClearClient($token, $secret);
```

HTTP Plugins
------------

[](#http-plugins)

Factories accept an optional list of extra `Http\Client\Common\Plugin` instances. Authentication is always registered first, then your plugins are appended.

```
use Glook\Dadata\DadataClientFactory;
use Http\Client\Common\Plugin\HeaderDefaultsPlugin;
use Http\Client\Common\Plugin\RetryPlugin;

$client = DadataClientFactory::createSuggestionsClient($token, $secret, [
    new RetryPlugin(['retries' => 2]),
    new HeaderDefaultsPlugin([
        'User-Agent' => 'my-application/1.0',
    ]),
]);
```

This is the recommended extension point for retries, logging, caching, tracing, rate limiting, custom headers, and framework-specific integrations.

Fetch Modes
-----------

[](#fetch-modes)

Generated methods return typed model objects by default:

```
$response = $client->suggestAddress($request);
```

To get the raw PSR-7 response instead, pass `Client::FETCH_RESPONSE`:

```
use Glook\Dadata\Generated\Suggestions\Client;

$response = $client->suggestAddress($request, Client::FETCH_RESPONSE);
```

Suggestions API
---------------

[](#suggestions-api)

Create a Suggestions client:

```
use Glook\Dadata\DadataClientFactory;

$client = DadataClientFactory::createSuggestionsClient($token, $secret);
```

### Suggest Address

[](#suggest-address)

```
use Glook\Dadata\Generated\Suggestions\Model\SuggestAddressRequest;

$request = (new SuggestAddressRequest())
    ->setQuery('самара метал')
    ->setCount(5);

$response = $client->suggestAddress($request);

foreach ($response->getSuggestions() ?? [] as $suggestion) {
    echo $suggestion->getValue().PHP_EOL;
}
```

### Suggest Address in English

[](#suggest-address-in-english)

```
use Glook\Dadata\Generated\Suggestions\Model\SuggestAddressRequest;

$request = (new SuggestAddressRequest())
    ->setQuery('samara metal')
    ->setCount(5)
    ->setLanguage('en');

$response = $client->suggestAddress($request);
```

### Find Address by FIAS or KLADR ID

[](#find-address-by-fias-or-kladr-id)

```
use Glook\Dadata\Generated\Suggestions\Model\FindAddressByIdRequest;

$request = (new FindAddressByIdRequest())
    ->setQuery('9120b43f-2fae-4838-a144-85e43c2bfb29')
    ->setCount(1);

$response = $client->findByIdAddress($request);
```

### Reverse Geocode Address

[](#reverse-geocode-address)

```
use Glook\Dadata\Generated\Suggestions\Model\GeoLocateAddressRequest;

$request = (new GeoLocateAddressRequest())
    ->setLat(55.878)
    ->setLon(37.653)
    ->setRadiusMeters(1000)
    ->setCount(5);

$response = $client->geoLocateAddress($request);
```

### Find Company by INN

[](#find-company-by-inn)

```
use Glook\Dadata\Generated\Suggestions\Model\FindPartyByIdRequest;

$request = (new FindPartyByIdRequest())
    ->setQuery('7707083893')
    ->setCount(5);

$response = $client->findByIdParty($request);
```

Find by INN and KPP:

```
$request = (new FindPartyByIdRequest())
    ->setQuery('7707083893')
    ->setKpp('540602001')
    ->setCount(1);

$response = $client->findByIdParty($request);
```

### Suggest Company

[](#suggest-company)

```
use Glook\Dadata\Generated\Suggestions\Model\SuggestPartyRequest;

$request = (new SuggestPartyRequest())
    ->setQuery('сбер')
    ->setCount(5);

$response = $client->suggestParty($request);
```

### Suggest Bank

[](#suggest-bank)

```
use Glook\Dadata\Generated\Suggestions\Model\SuggestBankRequest;

$request = (new SuggestBankRequest())
    ->setQuery('ти')
    ->setCount(5);

$response = $client->suggestBank($request);
```

### Suggest Email

[](#suggest-email)

```
use Glook\Dadata\Generated\Suggestions\Model\SuggestRequest;

$request = (new SuggestRequest())
    ->setQuery('maria@')
    ->setCount(5);

$response = $client->suggestEmail($request);
```

### Suggestions Methods

[](#suggestions-methods)

MethodDadata area`suggestAddress(SuggestAddressRequest $request)`Address suggestions`suggestParty(SuggestPartyRequest $request)`Company suggestions`suggestBank(SuggestBankRequest $request)`Bank suggestions`suggestEmail(SuggestRequest $request)`Email suggestions`suggestFio(SuggestFioRequest $request)`Personal name suggestions`suggestFias(SuggestFiasRequest $request)`FIAS suggestions`suggestOutward(string $name, SuggestOutwardRequest $request)`Generic suggest endpoint`findByIdAddress(FindAddressByIdRequest $request)`Find address by ID`findByIdParty(FindPartyByIdRequest $request)`Find company by INN/OGRN`findByIdBank(FindBankByIdRequest $request)`Find bank by BIC, SWIFT, INN, or registration number`findByIdFias(FindFiasByIdRequest $request)`Find address strictly by FIAS`findByIdDelivery(SuggestRequest $request)`Delivery city IDs`findByEmailCompany(SuggestRequest $request)`Find company by email`findAffiliatedParty(FindAffiliatedPartyRequest $request)`Find affiliated companies`geoLocateAddress(GeoLocateAddressRequest $request)`Reverse geocode address`geoLocateOutward(string $name, GeoLocateOutwardRequest $request)`Generic geolocate endpoint`ipLocateAddress(IpLocateAddressRequest $request)`GeoIP address lookup`findByIdOutward(string $name, SuggestRequest $request)`Generic find-by-id endpointCleaner API
-----------

[](#cleaner-api)

Create a Cleaner client:

```
use Glook\Dadata\DadataClientFactory;

$client = DadataClientFactory::createClearClient($token, $secret);
```

### Clean Address

[](#clean-address)

Cleaner methods accept arrays of strings and return arrays of typed result models.

```
$addresses = $client->cleanAddress([
    'мск сухонская 11 89',
]);

foreach ($addresses ?? [] as $address) {
    echo $address->getResult().PHP_EOL;
    echo $address->getPostalCode().PHP_EOL;
}
```

### Clean Name

[](#clean-name)

```
$names = $client->cleanName([
    'Срегей владимерович иванов',
]);

foreach ($names ?? [] as $name) {
    echo $name->getResult().PHP_EOL;
}
```

### Clean Phone

[](#clean-phone)

```
$phones = $client->cleanPhone([
    '9168-233-454',
]);

foreach ($phones ?? [] as $phone) {
    echo $phone->getPhone().PHP_EOL;
}
```

### Clean Email

[](#clean-email)

```
$emails = $client->cleanEmail([
    'serega@yandex/ru',
]);

foreach ($emails ?? [] as $email) {
    echo $email->getEmail().PHP_EOL;
}
```

### Clean Composite Record

[](#clean-composite-record)

Use `cleanRecord()` when one input row contains multiple fields.

```
use Glook\Dadata\Generated\Clear\Model\RecordString;

$request = (new RecordString())
    ->setStructure(['NAME', 'PHONE', 'EMAIL'])
    ->setData([
        ['Срегей владимерович иванов', '9168-233-454', 'serega@yandex/ru'],
    ]);

$response = $client->cleanRecord($request);
```

### Cleaner Methods

[](#cleaner-methods)

MethodDadata area`cleanAddress(array $values)`Address cleansing and geocoding`cleanName(array $values)`Personal name cleansing`cleanPhone(array $values)`Phone cleansing`cleanEmail(array $values)`Email cleansing`cleanBirthdate(array $values)`Birthdate cleansing`cleanPassport(array $values)`Passport cleansing`cleanVehicle(array $values)`Vehicle cleansing`cleanAsIs(array $values)`Return values without cleansing`cleanRecord(RecordString $request)`Composite record cleansingError Handling
--------------

[](#error-handling)

Generated methods throw `UnexpectedStatusCodeException` when Dadata returns an unexpected HTTP status code.

```
use Glook\Dadata\Generated\Suggestions\Exception\UnexpectedStatusCodeException;

try {
    $response = $client->suggestAddress($request);
} catch (UnexpectedStatusCodeException $exception) {
    $statusCode = $exception->getCode();
}
```

For Cleaner API imports, use `Glook\Dadata\Generated\Clear\Exception\UnexpectedStatusCodeException`.

Project Structure
-----------------

[](#project-structure)

```
src/
  DadataClientFactory.php
generated/
  clear/
  suggestions/
schemas/
  clear.yml
  suggestions.yml
config/
  clear-config.php
  suggestions-config.php

```

- `src/` contains hand-written public entry points.
- `generated/` contains JanePHP-generated SDK code and is committed to the package.
- `schemas/` contains OpenAPI schemas used for generation.
- `config/` contains JanePHP generator configuration.

Development
-----------

[](#development)

Install dependencies:

```
composer install
```

Run checks:

```
composer check
```

Run unit tests:

```
composer test
```

Regenerate clients from schemas:

```
composer generate:all
```

Generate only one client:

```
composer generate:suggestions
composer generate:clear
```

After generation, review generated code and commit it together with schema/config changes.

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance97

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

21d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6f2a24f7c11b723d30417c0182a228d29d4b85bfb58eb2729235fa7093b84320?d=identicon)[glook](/maintainers/glook)

---

Top Contributors

[![glook](https://avatars.githubusercontent.com/u/545998?v=4)](https://github.com/glook "glook (14 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/glook-dadata-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/glook-dadata-php-sdk/health.svg)](https://phpackages.com/packages/glook-dadata-php-sdk)
```

###  Alternatives

[telnyx/telnyx-php

Official Telnyx PHP SDK — APIs for Voice, SMS, MMS, WhatsApp, Fax, SIP Trunking, Wireless IoT, Call Control, and more. Build global communications on Telnyx's private carrier-grade network.

35729.6k2](/packages/telnyx-telnyx-php)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.8M710](/packages/sylius-sylius)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k11](/packages/tempest-framework)[mollie/mollie-api-php

Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.

61315.4M74](/packages/mollie-mollie-api-php)[phpro/http-tools

HTTP tools for developing more consistent HTTP implementations.

28146.3k](/packages/phpro-http-tools)[brd6/notion-sdk-php

Notion SDK for PHP

6121.6k](/packages/brd6-notion-sdk-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
