PHPackages                             api-check/php-symfony-client - 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. api-check/php-symfony-client

ActiveSymfony-bundle[API Development](/categories/api)

api-check/php-symfony-client
============================

ApiCheck Symfony Bundle

v1.0.0(3mo ago)01MITPHPPHP ^8.1CI passing

Since Apr 1Pushed 3mo agoCompare

[ Source](https://github.com/api-check/php-symfony-client)[ Packagist](https://packagist.org/packages/api-check/php-symfony-client)[ RSS](/packages/api-check-php-symfony-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

ApiCheck Symfony Bundle
=======================

[](#apicheck-symfony-bundle)

A Symfony bundle for the [ApiCheck API](https://apicheck.nl) - address validation, search, and verification for 18 European countries.

Requirements
------------

[](#requirements)

- PHP 8.1+
- Symfony 6.4+ | 7.0+
- An ApiCheck API key ([get one here](https://app.apicheck.nl))

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

[](#installation)

```
composer require api-check/php-symfony-client
```

The bundle is auto-enabled by Symfony Flex.

Configuration
-------------

[](#configuration)

Add to your `.env`:

```
APICHECK_API_KEY=your-api-key-here

# Optional - required if your API key has "Allowed Hosts" configured
APICHECK_REFERER=https://yourdomain.com
```

Or create `config/packages/apicheck.yaml`:

```
apicheck:
    api_key: '%env(APICHECK_API_KEY)%'
    referer: '%env(APICHECK_REFERER)%'
```

Usage
-----

[](#usage)

### Via Dependency Injection

[](#via-dependency-injection)

```
use ApiCheck\Api\ApiClient;

class MyService
{
    public function __construct(
        private ApiClient $apiCheck
    ) {}
}
```

Global Search (Recommended)
---------------------------

[](#global-search-recommended)

The **global search** endpoint is the most powerful way to find addresses. It searches across streets, cities, and postal codes in one query with powerful filtering options.

```
// Basic search - finds streets, cities, and postal codes
$results = $this->apiCheck->globalSearch('nl', 'Amsterdam', ['limit' => 10]);

foreach ($results->Results as $result) {
    echo "{$result->name} ({$result->type})\n";
}
// Output:
// Amsterdam (city)
// Amsterdamsestraat (street)
// 1012LM (postalcode)

// Filter by city - only return results within a specific city
$results = $this->apiCheck->globalSearch('nl', 'Dam', [
    'city_id' => 2465,
    'limit' => 10
]);

// Filter by street - only return results on a specific street
$results = $this->apiCheck->globalSearch('nl', '1', [
    'street_id' => 12345,
    'limit' => 10
]);

// Filter by postal code area
$results = $this->apiCheck->globalSearch('nl', 'A', [
    'postalcode_id' => 54321,
    'limit' => 10
]);

// Belgium: filter by locality (deelgemeente)
$results = $this->apiCheck->globalSearch('be', 'Hoofd', [
    'locality_id' => 111,
    'limit' => 10
]);

// Belgium: filter by municipality (gemeente)
$results = $this->apiCheck->globalSearch('be', 'Station', [
    'municipality_id' => 222,
    'limit' => 10
]);
```

### Global Search Parameters

[](#global-search-parameters)

ParameterTypeDescriptioncountrystringCountry code (nl, be, lu, de, fr, cz, fi, it, no, pl, pt, ro, es, ch, at, dk, gb, se)querystringSearch term (street name, city name, or postal code)limitintMaximum results (default: 10)city\_idintFilter results to a specific citystreet\_idintFilter results to a specific streetpostalcode\_idintFilter results to a specific postal code arealocality\_idintFilter results to a specific locality (Belgium)municipality\_idintFilter results to a specific municipality (Belgium)### Result Types

[](#result-types)

Results include a `type` field indicating what was matched:

- `city` - City/municipality
- `street` - Street name
- `postalcode` - Postal code area

Address Lookup (Netherlands &amp; Luxembourg)
---------------------------------------------

[](#address-lookup-netherlands--luxembourg)

For exact address lookup by postal code and house number:

```
// Basic lookup
$address = $this->apiCheck->lookup('nl', [
    'postalcode' => '1012LM',
    'number' => '1'
]);
echo $address->street;  // Damrak
echo $address->city;    // Amsterdam

// With number addition (apartment/suite)
$address = $this->apiCheck->lookup('nl', [
    'postalcode' => '1012LM',
    'number' => '1',
    'numberAddition' => 'A'
]);

// Get available number additions for an address
$additions = $this->apiCheck->getNumberAdditions('nl', '1012LM', '1');
print_r($additions->numberAdditions);  // ['A', 'B', '1-3']
```

Individual Search Endpoints
---------------------------

[](#individual-search-endpoints)

For targeted searches when you know exactly what you're looking for:

```
// Search cities
$cities = $this->apiCheck->search('nl', 'city', ['name' => 'Amsterdam', 'limit' => 10]);

// Search streets
$streets = $this->apiCheck->search('nl', 'street', ['name' => 'Damrak', 'limit' => 10]);
$streets = $this->apiCheck->search('nl', 'street', ['name' => 'Dam', 'city_id' => 2465, 'limit' => 10]);

// Search postal codes
$postalcodes = $this->apiCheck->search('nl', 'postalcode', ['name' => '1012', 'limit' => 10]);

// Search localities (Belgium primarily)
$localities = $this->apiCheck->searchLocality('be', 'Antwerpen', ['limit' => 10]);

// Search municipalities (Belgium primarily)
$municipalities = $this->apiCheck->searchMunicipality('be', 'Antwerpen', ['limit' => 10]);

// Resolve full address using IDs from other searches
$addresses = $this->apiCheck->searchAddress('nl', [
    'city_id' => 2465,
    'number' => '1',
    'numberAddition' => 'A',
    'limit' => 10
]);
```

Verification
------------

[](#verification)

```
// Verify email
$result = $this->apiCheck->verifyEmail('test@example.com');
echo $result->status;          // valid, invalid, or unknown
echo $result->disposable_email; // true if disposable
echo $result->greylisted;       // true if greylisted

// Verify phone number
$result = $this->apiCheck->verifyPhone('+31612345678');
echo $result->valid;           // true if valid number
echo $result->country_code;    // NL
```

Supported Countries
-------------------

[](#supported-countries)

### All Search Endpoints (18 countries)

[](#all-search-endpoints-18-countries)

`nl`, `be`, `lu`, `de`, `fr`, `cz`, `fi`, `it`, `no`, `pl`, `pt`, `ro`, `es`, `ch`, `at`, `dk`, `gb`, `se`

### Address Lookup (Netherlands &amp; Luxembourg only)

[](#address-lookup-netherlands--luxembourg-only)

`nl`, `lu`

Tips
----

[](#tips)

1. **Use Global Search first** - It's the most flexible and covers all use cases
2. **Filter for precision** - Use city\_id, street\_id, etc. to narrow down results
3. **Chain searches** - Use Search City to get a city\_id, then use it in Global Search or Search Address
4. **Belgium addresses** - Use locality\_id and municipality\_id filters for precise results

License
-------

[](#license)

MIT

Support
-------

[](#support)

- Website: [apicheck.nl](https://www.apicheck.nl)
- Email:
- Docs: [docs.apicheck.nl](https://docs.apicheck.nl)

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance82

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity42

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

Unknown

Total

1

Last Release

92d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2fbba6e9dc0a41b3dc76f177d888dd47ab13774b796c6327e2274f6301cea6e8?d=identicon)[ApiCheck](/maintainers/ApiCheck)

---

Top Contributors

[![WouterDoornbos](https://avatars.githubusercontent.com/u/9071887?v=4)](https://github.com/WouterDoornbos "WouterDoornbos (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/api-check-php-symfony-client/health.svg)

```
[![Health](https://phpackages.com/badges/api-check-php-symfony-client/health.svg)](https://phpackages.com/packages/api-check-php-symfony-client)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M388](/packages/easycorp-easyadmin-bundle)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k12](/packages/2lenet-crudit-bundle)

PHPackages © 2026

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