Sari la conținut

API public v1

Catalogul moldova.travel — experiențe turistice, evenimente și pachete ale operatorilor — ca JSON, în română și engleză, fără cheie de acces. Aceleași date și aceeași regulă de publicare ca site-ul: ce nu este aprobat nu apare nicăieri.

Pagina asta e pentru dezvoltatori — descrie API-ul public al site-ului, cu exemple de cereri și răspunsuri. Dacă vrei să-ți planifici o călătorie, începe de aici:

Descrierile punctelor de acces și ale parametrilor de mai jos sunt în engleză, ca și documentul OpenAPI: sunt text de referință pentru dezvoltatori și asistenți AI.

Pe scurt

Adresa de bază
https://demo.moldova.travel/api/v1
Acces
Fără cheie, fără cont. Doar cereri GET; nimic nu se poate scrie prin API.
Limită de cereri
60 de cereri pe minut pentru fiecare adresă IP. Peste limită, răspunsul este 429 cu antetul Retry-After.
Limba
Parametrul lang acceptă: ro, en. Fără lang, răspunsul este în ro. O limbă nepublicată dă eroare 400, nu conținut într-o altă limbă.
Legături
Fiecare element are url (pagina lui de pe site) și goUrl — legătura urmărită care duce la partener. goUrl este singura cale către partener; datele de contact nu apar în API. Nu o rescrie și nu o ocoli.
Prețuri
Orice preț este în lei (MDL) și orientativ (indicative: true), oferit de partener. De la 2 octombrie 2026 prețurile și benzile de preț ale înregistrărilor stocate în euro au fost convertite în lei (19,5 lei pentru un euro, rotunjit la 10 lei); forma răspunsului nu s-a schimbat. Platforma nu încasează plăți și nu confirmă rezervări.
Cache
Răspunsurile 200 vin cu Cache-Control public și pot fi păstrate câteva minute. Catalogul se schimbă rar; nu-l cere la fiecare secundă.
Erori
Erorile sunt RFC 9457 (application/problem+json), cu un câmp errorCode stabil și, la validare, lista errors pe câmpuri.

Document OpenAPI

Descrierea citibilă de mașină a acestui API, pentru generatoare de clienți și asistenți: openapi/v1.json

https://demo.moldova.travel/api/v1/openapi.json

Puncte de acces

GET/api/v1/experiences

List approved experiences

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

Parametri · 8
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.
Exemplu: en
region
A region's stable code, e.g. orhei — the value every item's region.code carries. An unknown code is a 400.
Exemplu: 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.
Exemplu: wine,gastronomy
price
Comma-separated price-band tokens, OR-ed: free, budget, moderate, premium, luxury, unpriced.
Exemplu: free,budget
audience
Comma-separated traveller-type tokens; matches experiences suited to ANY of them: families, couples, solo, groups, seniors, reduced-mobility, adults-only.
Exemplu: families
lodging
true keeps only places where a visitor can spend the night (guesthouses, hotels, farms with rooms); absent or false applies no filter.
Exemplu: true
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.
Exemplu: 2
pageSize
Items per page, 1 to 48. Default: the site's own catalog page size.
Exemplu: 12

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/experiences?lang=en&category=wine&pageSize=5"
Exemplu de răspuns
{
  "items": [
    {
      "id": 12,
      "slug": "chateau-vartely-cellar-tour",
      "lang": "en",
      "name": "Château Vartely cellar tour",
      "summary": "A guided walk through the cellars followed by a tasting of five wines.",
      "category": "wine",
      "region": {
        "code": "orhei",
        "name": "Orhei and the Răut valley",
        "slug": "orhei-and-the-raut-valley"
      },
      "price": {
        "amount": 480,
        "currency": "MDL",
        "indicative": true
      },
      "priceBand": "moderate",
      "audience": [
        "couples",
        "groups"
      ],
      "durationMinutes": 120,
      "offersLodging": false,
      "image": "https://demo.moldova.travel/media/experiences/12/cover.webp",
      "url": "https://demo.moldova.travel/en/experiences/12-chateau-vartely-cellar-tour",
      "goUrl": "https://demo.moldova.travel/go/e/12/api",
      "goKind": "website"
    }
  ],
  "page": 1,
  "pageSize": 12,
  "totalCount": 27,
  "totalPages": 3,
  "lang": "en"
}

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.

Parametri · 2
id
The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not.
Exemplu: 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.
Exemplu: en

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/experiences/12?lang=en"
Exemplu de răspuns
{
  "id": 12,
  "slug": "chateau-vartely-cellar-tour",
  "lang": "en",
  "name": "Château Vartely cellar tour",
  "description": "The tour starts in the fermentation hall and ends in the barrel cellar, where five wines are tasted with local cheese. Booking is through the winery's own site.",
  "descriptionMarkdown": "",
  "category": "wine",
  "region": {
    "code": "orhei",
    "name": "Orhei and the Răut valley",
    "slug": "orhei-and-the-raut-valley"
  },
  "partner": {
    "id": 4,
    "name": "Château Vartely"
  },
  "partnerDescription": "A family winery in the Orhei hills, open since 2004.",
  "location": {
    "latitude": 47.383,
    "longitude": 28.816
  },
  "price": {
    "amount": 480,
    "currency": "MDL",
    "indicative": true
  },
  "priceBand": "moderate",
  "services": [
    {
      "name": "Winery tour",
      "priceMdl": 150
    },
    {
      "name": "Tasting of five wines",
      "priceMdl": 280
    }
  ],
  "audience": [
    "couples",
    "groups"
  ],
  "durationMinutes": 120,
  "offersLodging": false,
  "openingHoursState": "scheduled",
  "openingHours": [
    {
      "day": "saturday",
      "opens": "10:00",
      "closes": "18:00"
    },
    {
      "day": "sunday",
      "opens": "10:00",
      "closes": "16:00"
    }
  ],
  "openingHoursNote": null,
  "availabilityNotes": [
    {
      "status": "seasonal-open",
      "note": "Cellar tours run from April to October.",
      "from": "2026-04-01",
      "to": "2026-10-31"
    }
  ],
  "images": [
    "https://demo.moldova.travel/media/experiences/12/cover.webp"
  ],
  "tags": [
    "wine",
    "tasting",
    "cellar"
  ],
  "url": "https://demo.moldova.travel/en/experiences/12-chateau-vartely-cellar-tour",
  "goUrl": "https://demo.moldova.travel/go/e/12/api",
  "goKind": "website",
  "lastModifiedUtc": "2026-05-02T09:30:00Z"
}

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.

Parametri · 3
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.
Exemplu: 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.
Exemplu: 2
pageSize
Items per page, 1 to 48. Default: the site's own catalog page size.
Exemplu: 12

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/events?lang=ro"
Exemplu de răspuns
{
  "items": [
    {
      "id": 3,
      "slug": "opera-butuceni",
      "lang": "ro",
      "title": "Opera Butuceni",
      "summary": "Festival de operă în aer liber, în peisajul Orheiului Vechi.",
      "venue": "Butuceni, Orheiul Vechi",
      "startsAtUtc": "2026-08-15T16:00:00Z",
      "endsAtUtc": "2026-08-15T21:00:00Z",
      "region": {
        "code": "orhei",
        "name": "Orhei și Valea Răutului",
        "slug": "orhei-si-valea-rautului"
      },
      "ticketPriceMdl": 150,
      "image": "https://demo.moldova.travel/media/events/3/cover.webp",
      "url": "https://demo.moldova.travel/ro/events/3-opera-butuceni",
      "goUrl": "https://demo.moldova.travel/go/ev/3/api"
    }
  ],
  "page": 1,
  "pageSize": 12,
  "totalCount": 5,
  "totalPages": 1,
  "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.

Parametri · 2
id
The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not.
Exemplu: 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.
Exemplu: en

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/events/3?lang=en"
Exemplu de răspuns
{
  "id": 3,
  "slug": "opera-butuceni",
  "lang": "en",
  "title": "Opera Butuceni",
  "description": "An open-air opera festival staged in the Orheiul Vechi landscape. Bring a blanket; the performance starts at sunset.",
  "descriptionMarkdown": "",
  "venue": "Butuceni, Orheiul Vechi",
  "location": {
    "latitude": 47.305,
    "longitude": 28.965
  },
  "startsAtUtc": "2026-08-15T16:00:00Z",
  "endsAtUtc": "2026-08-15T21:00:00Z",
  "region": {
    "code": "orhei",
    "name": "Orhei and the Răut valley",
    "slug": "orhei-and-the-raut-valley"
  },
  "ticketPriceMdl": 150,
  "partner": {
    "id": 4,
    "name": "Orheiul Vechi Cultural Reserve"
  },
  "isCancelled": false,
  "images": [
    "https://demo.moldova.travel/media/events/3/cover.webp"
  ],
  "url": "https://demo.moldova.travel/en/events/3-opera-butuceni",
  "goUrl": "https://demo.moldova.travel/go/ev/3/api",
  "lastModifiedUtc": "2026-06-01T08:00:00Z"
}

GET/api/v1/packages

List published tour packages

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

Parametri · 3
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.
Exemplu: 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.
Exemplu: 2
pageSize
Items per page, 1 to 48. Default: the site's own catalog page size.
Exemplu: 12

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/packages?lang=en"
Exemplu de răspuns
{
  "items": [
    {
      "id": 1,
      "slug": "three-days-of-wine-and-monasteries",
      "lang": "en",
      "title": "Three days of wine and monasteries",
      "summary": "Cricova, Orheiul Vechi and two family wineries, with a driver-guide.",
      "partner": {
        "id": 4,
        "name": "Moldova Discovery Tours"
      },
      "price": {
        "amount": 7610,
        "currency": "MDL",
        "indicative": true
      },
      "publishedAtUtc": "2026-04-20T12:00:00Z",
      "url": "https://demo.moldova.travel/en/packages/1-three-days-of-wine-and-monasteries",
      "goUrl": "https://demo.moldova.travel/go/p/4/api/package"
    }
  ],
  "page": 1,
  "pageSize": 12,
  "totalCount": 9,
  "totalPages": 1,
  "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.

Parametri · 2
id
The item's stable numeric id — the id field of a list item. Slugs are decorative and may change; ids do not.
Exemplu: 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.
Exemplu: en

Exemplu de cerere

curl \
  "https://demo.moldova.travel/api/v1/packages/1?lang=en"
Exemplu de răspuns
{
  "id": 1,
  "slug": "three-days-of-wine-and-monasteries",
  "lang": "en",
  "title": "Three days of wine and monasteries",
  "description": "Day 1: Cricova cellars and Chișinău old town. Day 2: Orheiul Vechi, Curchi monastery and a village lunch. Day 3: two family wineries in the Codru hills. Price per person, two sharing, transport and tastings included.",
  "descriptionMarkdown": "",
  "partner": {
    "id": 4,
    "name": "Moldova Discovery Tours"
  },
  "price": {
    "amount": 7610,
    "currency": "MDL",
    "indicative": true
  },
  "publishedAtUtc": "2026-04-20T12:00:00Z",
  "url": "https://demo.moldova.travel/en/packages/1-three-days-of-wine-and-monasteries",
  "goUrl": "https://demo.moldova.travel/go/p/4/api/package",
  "lastModifiedUtc": "2026-04-20T12:00:00Z",
  "stops": [
    {
      "name": "Chișinău — old centre",
      "location": {
        "latitude": 47.0245,
        "longitude": 28.8323
      },
      "url": null
    },
    {
      "name": "Cricova",
      "location": {
        "latitude": 47.1363,
        "longitude": 28.8578
      },
      "url": "https://demo.moldova.travel/en/experiences/12-cricova"
    },
    {
      "name": "Orheiul Vechi",
      "location": {
        "latitude": 47.3015,
        "longitude": 28.9807
      },
      "url": null
    }
  ],
  "plan": null
}

Erori

400 pentru o cerere greșită (limbă nepublicată, filtru necunoscut, pagină în afara limitelor), 404 pentru un element sau o pagină inexistentă, 429 la depășirea limitei. Corpul este mereu un obiect problem+json cu errorCode.

Exemplu: filtru necunoscut
{
  "title": "Invalid request",
  "status": 400,
  "detail": "One or more fields failed validation.",
  "instance": "/api/v1/experiences",
  "errorCode": "VALIDATION_FAILED",
  "errors": [
    {
      "field": "category",
      "message": "Unknown category token. Use the `category` values items carry, e.g. wine, gastronomy, rural-tourism."
    }
  ]
}
Exemplu: element inexistent
{
  "title": "Not found",
  "status": 404,
  "detail": "No approved experience has id 999.",
  "instance": "/api/v1/experiences/999",
  "errorCode": "EXPERIENCE_NOT_FOUND"
}

Condiții de utilizare

Conținutul este publicat de ANTRIM și de partenerii săi. Poți afișa și redistribui datele cu trimitere la moldova.travel, păstrând goUrl neschimbat ca legătură către partener și prețurile ca orientative. API-ul este oferit ca atare, fără garanție de disponibilitate.

Pentru asistenți AI

Dacă folosești ChatGPT sau Claude, nu ai nevoie de API: conectează serverul MCP și cere un traseu.