PHPackages                             ethelserth/biblionet-php - 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. ethelserth/biblionet-php

ActiveLibrary[API Development](/categories/api)

ethelserth/biblionet-php
========================

A framework-agnostic PHP client for the Biblionet Greek books API

1.0.3(3mo ago)07↓92.3%1MITPHPPHP ^8.1

Since Apr 3Pushed 3mo agoCompare

[ Source](https://github.com/ethelserth/biblionet-php)[ Packagist](https://packagist.org/packages/ethelserth/biblionet-php)[ RSS](/packages/ethelserth-biblionet-php/feed)WikiDiscussions master Synced today

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

ethelserth/biblionet-php
========================

[](#ethelserthbiblionet-php)

A framework-agnostic PHP client for the [Biblionet](https://biblionet.gr) Greek books API.

Biblionet is the primary books-in-print database for Greece, covering over 200,000 titles with full bibliographic data, contributor information, subject classification, and commercial details.

This package provides a clean, typed interface to the Biblionet web service. It has no framework dependency and works with any PSR-18 compatible HTTP client.

If you are using Laravel, see [ethelserth/biblionet-laravel](https://github.com/ethelserth/biblionet-laravel) for a ready-made service provider and configuration.

---

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

[](#requirements)

- PHP 8.1 or higher
- A PSR-18 HTTP client (e.g. `guzzlehttp/guzzle`)
- A PSR-17 HTTP factory (e.g. `guzzlehttp/psr7`)
- Biblionet API credentials (request access at [biblionet.gr](https://biblionet.gr))

---

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

[](#installation)

```
composer require ethelserth/biblionet-php
```

You will also need a PSR-18 client and PSR-17 factories. If you do not already have one:

```
composer require guzzlehttp/guzzle guzzlehttp/psr7
```

---

Usage
-----

[](#usage)

### Instantiation

[](#instantiation)

```
use Ethelserth\Biblionet\BiblionetClient;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory;

$factory = new HttpFactory();

$client = new BiblionetClient(
    httpClient: new Client(),
    requestFactory: $factory,
    streamFactory: $factory,
    username: 'your-username',
    password: 'your-password',
);
```

### Fetching titles

[](#fetching-titles)

```
// Full title record by Biblionet ID
$title = $client->getTitle(72584);

echo $title->title;          // "Θεραπείας συνέχεια"
echo $title->publisher;      // "Νεφέλη"
echo $title->price;          // "5.8300"
echo $title->summary;        // Full description text
echo $title->coverImage;     // "https://biblionet.gr/wp-content/..."

// By ISBN (dashes are ignored by the API)
$title = $client->getTitleByIsbn('978-960-211-652-4');

// All titles updated on a specific date
$titles = $client->getTitlesByLastUpdate('2024-01-15');

// Paginated month listing (lighter response, no physical details)
$summaries = $client->getMonthTitles(year: 2024, month: 1, page: 1, perPage: 50);

foreach ($summaries as $summary) {
    echo $summary->title;
    echo $summary->publishYear;
}
```

### Fetching related data

[](#fetching-related-data)

```
// Contributors for a title (authors, translators, editors etc.)
$contributors = $client->getContributors(72584);

foreach ($contributors as $contributor) {
    echo $contributor->contributorFullName; // "Νίκη Λοϊζίδη"
    echo $contributor->contributorType;     // "Συγγραφέας"
}

// Companies associated with a title (publisher, distributor etc.)
$companies = $client->getTitleCompanies(72584);

// DDC subjects assigned to a title
$subjects = $client->getTitleSubjects(72584);

foreach ($subjects as $subject) {
    echo $subject->subjectTitle; // "Νεοελληνική πεζογραφία - Προσωπικές αφηγήσεις"
    echo $subject->subjectDdc;   // "889.3"
}
```

### Fetching persons and companies

[](#fetching-persons-and-companies)

```
// Full person record by ID
$persons = $client->getPersons(15521);

// All persons updated on a specific date
$persons = $client->getPersonsByLastUpdate('2024-01-15');

// Full company record by ID
$companies = $client->getCompany(212);

// All companies updated on a specific date
$companies = $client->getCompaniesByLastUpdate('2024-01-15');
```

### Fetching subjects and languages

[](#fetching-subjects-and-languages)

```
// Subject with DDC code and parent ID for hierarchy traversal
$subject = $client->getSubject(20);

echo $subject->subjectTitle;  // "Νεοελληνική πεζογραφία - Προσωπικές αφηγήσεις"
echo $subject->subjectDdc;    // "889.3"
echo $subject->subjectParent; // parent subject ID (int) or null

// Language by ID
$language = $client->getLanguage(7);

echo $language->language; // "ισπανικά"
```

---

DTOs
----

[](#dtos)

All responses are returned as immutable typed value objects. No business logic lives in the DTOs — they carry exactly what the API returns, with proper PHP types and empty strings converted to `null`.

DTOSource endpointNotes`Title``get_title`Full bibliographic record`TitleSummary``get_month_titles`Lighter listing record`Contributor``get_contributors`Title-contributor relationship`Company``get_title_companies`Title-company relationship`TitleSubject``get_title_subject`Title-subject relationship with DDC`Person``get_person`Full person record`CompanyInfo``get_company`Full company record`Subject``get_subject`Subject with DDC and parent ID`Language``get_language`Language name by ID---

Error handling
--------------

[](#error-handling)

All errors throw `Ethelserth\Biblionet\Exceptions\BiblionetException`:

```
use Ethelserth\Biblionet\Exceptions\BiblionetException;

try {
    $title = $client->getTitle(99999999);
} catch (BiblionetException $e) {
    // API error, HTTP failure, or malformed response
    echo $e->getMessage();
}
```

---

Testing credentials
-------------------

[](#testing-credentials)

Biblionet provides public test credentials for development:

- Username: `testuser`
- Password: `testpsw`

These are rate-limited and should not be used in production.

---

License
-------

[](#license)

MIT. See [LICENSE](LICENSE).

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance82

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity46

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

92d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/8569d5c01a6c620bb2d521b2dadcd72bccc4e101bfb7851e574d644348731bfd?d=identicon)[ethelserth](/maintainers/ethelserth)

---

Top Contributors

[![ethelserth](https://avatars.githubusercontent.com/u/16955982?v=4)](https://github.com/ethelserth "ethelserth (5 commits)")

---

Tags

apiclientgreekbooksbiblionetbibliographic

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ethelserth-biblionet-php/health.svg)

```
[![Health](https://phpackages.com/badges/ethelserth-biblionet-php/health.svg)](https://phpackages.com/packages/ethelserth-biblionet-php)
```

###  Alternatives

[openai-php/client

OpenAI PHP is a supercharged PHP API client that allows you to interact with the Open AI API

5.8k28.0M318](/packages/openai-php-client)[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.

60216.0M85](/packages/mollie-mollie-api-php)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[getbrevo/brevo-php

Official Brevo provided RESTFul API V3 php library

1003.9M50](/packages/getbrevo-brevo-php)[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.

35789.4k2](/packages/telnyx-telnyx-php)[kbsali/redmine-api

Redmine API client

4271.1M34](/packages/kbsali-redmine-api)

PHPackages © 2026

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