Libraries using Lend Engine automatically share anonymous data with BorrowMore, unless opted out. If your library doesn't use Lend Engine, you can still contribute borrowing activity to our network report by exposing a simple JSON endpoint. Once set up, contact us and we'll add your library to the feed.
Your server needs to provide a single GET endpoint that returns a paginated list of
completed loan rows — items that have been borrowed and returned. We poll this endpoint periodically
to pull in new records.
No authentication is required — the endpoint can be public and read-only.
GET https://yourlibrary.example.com/api/loan-rows/
The exact path is up to you — just let us know what it is.
| Parameter | Type | Description | |
|---|---|---|---|
checkedInFrom |
YYYY-MM-DD |
required | Return rows where the item was checked in on or after this date. |
checkedInTo |
YYYY-MM-DD |
optional | Return rows where the item was checked in on or before this date. |
page |
integer |
optional | Page number, 1-indexed. Defaults to 1. |
length |
integer |
optional | Records per page. Defaults to 50, max 100. |
Return application/json with the following structure:
{
"totalResults": 312,
"page": 1,
"totalPages": 4,
"itemsPerPage": 100,
"hasNextPage": true,
"hasPreviousPage": false,
"loanRows": [
{
"id": 1042,
"loanId": 501,
"contactId": 88,
"itemId": "item-abc-123",
"itemName": "Power Drill",
"itemSku": "DRILL-001",
"itemType": "loan",
"itemQuantity": 1,
"fee": "2.50",
"dueOutAt": "2026-01-15 09:00:00",
"dueInAt": "2026-01-29 09:00:00",
"checkedOutAt": "2026-01-15 10:30:00",
"checkedInAt": "2026-01-28 14:15:00"
}
]
}
| Field | Type | Description |
|---|---|---|
totalResults | integer | Total matching records across all pages. |
page | integer | Current page number. |
totalPages | integer | Total number of pages. |
itemsPerPage | integer | Records returned on this page. |
hasNextPage | boolean | Whether a further page exists. Used to drive pagination. |
hasPreviousPage | boolean | Whether a previous page exists. |
loanRows | array | The loan row records for this page. |
| Field | Type | Description | |
|---|---|---|---|
id | integer | required | Unique ID for this loan row in your system. Used to deduplicate imports. |
itemId | string | required | Your internal ID for the item. Used to group borrows per item. |
itemName | string | required | Display name of the item. May be a JSON object keyed by locale, e.g. {"en": "Drill"}. |
checkedOutAt | datetime | required | When the borrower collected the item. Format: YYYY-MM-DD HH:MM:SS. |
checkedInAt | datetime | required | When the item was returned. Format: YYYY-MM-DD HH:MM:SS. |
dueOutAt | datetime | required | Scheduled loan start date. |
dueInAt | datetime | required | Scheduled return date. |
loanId | integer | optional | ID of the parent loan (if your system groups multiple items per loan). |
contactId | integer | optional | An opaque ID for the borrower. Never shown publicly — used only to count unique borrowers. |
itemSku | string | optional | Item SKU or barcode. |
itemType | string | optional | Type of loan, e.g. loan or reservation. Defaults to loan. |
itemQuantity | integer | optional | Quantity lent. Defaults to 1. |
fee | string | optional | Fee charged for this loan, as a decimal string e.g. "2.50". Defaults to "0.00". |
We only store the fields listed above. contactId is never displayed publicly —
it is used solely to count the number of unique borrowers across the network.
No names, emails, or personal details should be included in the response.
Once your endpoint is live, get in touch with the URL and your library's slug on this platform. We'll verify the feed and add it to the daily import.