# Public API v1

The moldova.travel catalog — tourism experiences, events and operators' packages — as JSON, in Romanian and English, with no API key. The same data and the same publication rule as the site: what is not approved appears nowhere.

- **Web page:** [https://travel.evisoft.com/en/api/v1](https://travel.evisoft.com/en/api/v1)
- **This document:** [https://travel.evisoft.com/en/api/v1.md](https://travel.evisoft.com/en/api/v1.md)
- **Language:** en
- **Other languages:** [RO](https://travel.evisoft.com/ro/api/v1.md)

This page is for developers — it describes the site's public API, with request and response examples. If you want to plan a trip, start here:

- [Plan your trip](https://travel.evisoft.com/en/plan)
- [Experiences](https://travel.evisoft.com/en/experiences.md)

The endpoint and parameter descriptions below are in English, like the OpenAPI document: they are reference text for developers and AI assistants.

## In short

- **Base URL:** `https://travel.evisoft.com/api/v1`
- **Access:** No key, no account. GET requests only; nothing can be written through the API.
- **Rate limit:** 60 requests per minute per client IP address. Beyond that, the answer is a 429 with a Retry-After header.
- **Language:** The lang parameter accepts: ro, en. Without lang, the answer is in ro. An unpublished language is a 400 error, never content in another language.
- **Links:** Every item carries url \(its page on the site\) and goUrl — the tracked link that leads to the partner. goUrl is the only way to reach the partner; contact details are not in the API. Do not rewrite or bypass it.
- **Prices:** Every price is in Moldovan lei \(MDL\) and indicative \(indicative: true\), supplied by the partner. On 2 October 2026 the prices and price bands of listings stored in euro were converted to lei \(19.5 lei to the euro, rounded to 10 lei\); the shape of the response did not change. The platform takes no payment and confirms no booking.
- **Caching:** 200 responses carry a public Cache-Control and may be kept for a few minutes. The catalog changes rarely; do not poll it every second.
- **Errors:** Errors are RFC 9457 problem details \(application/problem+json\) with a stable errorCode field and, for validation, a per-field errors list.

## OpenAPI document

The machine-readable description of this API, for client generators and assistants: [https://travel.evisoft.com/api/v1/openapi.json](https://travel.evisoft.com/api/v1/openapi.json)

## Endpoints

### GET /api/v1/experiences

List approved experiences

One page of the experience catalog, filterable by region, category, price band and traveller type — the same filters as the website's catalog, applied by the same service. Ordered as the site orders them.

| Parameter | Description | Example |
| --- | --- | --- |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |
| `region` | A region's stable code, e.g. orhei — the value every item's region.code carries. An unknown code is a 400. | `orhei` |
| `category` | Comma-separated category tokens, OR-ed: nature, culture, gastronomy, wine, adventure, wellness, history, religious, rural-tourism, entertainment, other. An unknown token is a 400. | `wine,gastronomy` |
| `price` | Comma-separated price-band tokens, OR-ed: free, budget, moderate, premium, luxury, unpriced. | `free,budget` |
| `audience` | Comma-separated traveller-type tokens; matches experiences suited to ANY of them: families, couples, solo, groups, seniors, reduced-mobility, adults-only. | `families` |
| `page` | 1-based page number, default 1. A page past the last one is a 404 with errorCode EXPERIENCE\_NOT\_FOUND, EVENT\_NOT\_FOUND or PACKAGE\_NOT\_FOUND. | `2` |
| `pageSize` | Items per page, 1 to 48. Default: the site's own catalog page size. | `12` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/experiences?lang=en&category=wine&pageSize=5"
```

### GET /api/v1/experiences/{id}

One experience

Everything the experience's page shows: description, location, opening hours, seasonal notes, photos, tags, the partner's name — and goUrl, the only way to reach the partner. Contact details are deliberately absent.

| Parameter | Description | Example |
| --- | --- | --- |
| `id` | The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not. | `12` |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/experiences/12?lang=en"
```

### GET /api/v1/events

List upcoming events

Approved events that have not yet ended, soonest first. Cancelled events are never listed; a cancelled event's detail still answers, flagged isCancelled.

| Parameter | Description | Example |
| --- | --- | --- |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |
| `page` | 1-based page number, default 1. A page past the last one is a 404 with errorCode EXPERIENCE\_NOT\_FOUND, EVENT\_NOT\_FOUND or PACKAGE\_NOT\_FOUND. | `2` |
| `pageSize` | Items per page, 1 to 48. Default: the site's own catalog page size. | `12` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/events?lang=ro"
```

### GET /api/v1/events/{id}

One event

The event's full description, venue and GPS location, dates \(UTC — display in Europe/Chisinau\), photos and organising partner.

| Parameter | Description | Example |
| --- | --- | --- |
| `id` | The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not. | `12` |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/events/3?lang=en"
```

### GET /api/v1/packages

List published tour packages

Packages that tour operators have published and whose company an ANTRIM administrator has approved, newest first.

| Parameter | Description | Example |
| --- | --- | --- |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |
| `page` | 1-based page number, default 1. A page past the last one is a 404 with errorCode EXPERIENCE\_NOT\_FOUND, EVENT\_NOT\_FOUND or PACKAGE\_NOT\_FOUND. | `2` |
| `pageSize` | Items per page, 1 to 48. Default: the site's own catalog page size. | `12` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/packages?lang=en"
```

### GET /api/v1/packages/{id}

One tour package

The package as the operator approved it: full description, indicative price, the operator's name and the tracked goUrl to reach them.

| Parameter | Description | Example |
| --- | --- | --- |
| `id` | The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not. | `12` |
| `lang` | ISO 639-1 code of a published language: ro or en. Default ro. Any other code — including a language the platform models but has not published — is a 400 naming the published set, never a fallback. | `en` |

Example request

```bash
curl \
  "https://travel.evisoft.com/api/v1/packages/1?lang=en"
```

## Errors

400 for a bad request \(an unpublished language, an unknown filter token, a page out of range\), 404 for an item or page that does not exist, 429 when the rate limit is exceeded. The body is always a problem+json object with an errorCode.

- [The moldova.travel MCP server](https://travel.evisoft.com/en/mcp.md) — A Model Context Protocol server that opens this platform's public catalog to AI assistants: experiences, events, tour packages and the trip planner.

## Terms of use

Content is published by ANTRIM and its partners. You may display and redistribute the data with attribution to moldova.travel, keeping goUrl unchanged as the link to the partner and prices marked as indicative. The API is provided as is, with no availability guarantee.

This is the Markdown version of the page above. Links to partners go through moldova.travel, on addresses that begin with /go/, and the platform only advises: it takes no bookings and no payments.
