![Otelpuan logo](/assets/logos/otelpuan_logo-8aaa9ca043844ab5c230ec7b1252c4f780f12d8630c732907a5d10b137b35ab3.png) Otelpuan API
# The Otelpuan API for hotel search, prices, and reviews.

Find a hotel, compare **rooms and prices for your dates** , and read guest feedback with REST or MCP.

REQUESTGET

USE&nbsp;CASEFind hotel suggestions and pass hotel\_id directly to reviews.

```
curl "https://api.stayapi.com/v1/otelpuan/search" \
  -G \
  -H "x-api-key: $STAYAPI_KEY" \
  -d "query=Turkler"
```

USE&nbsp;CASEResolve an Otelpuan URL, then reuse hotel\_id for reviews.

```
curl "https://api.stayapi.com/v1/otelpuan/hotel/url-to-id" \
  -G \
  -H "x-api-key: $STAYAPI_KEY" \
  -d "url=https://www.otelpuan.com/Turkler-Otel"
```

USE&nbsp;CASEIllustrative response using a real hotel ID; review content, IDs, and one-review counts are synthetic, not current hotel totals.

```
curl "https://api.stayapi.com/v1/otelpuan/hotel/reviews" \
  -G \
  -H "x-api-key: $STAYAPI_KEY" \
  -d "hotel_id=25322" \
  -d "page=1"
```

USE&nbsp;CASEIllustrative one-room excerpt. Prices and availability can change.

```
curl "https://api.stayapi.com/v1/otelpuan/hotel/rooms" \
  -G \
  -H "x-api-key: $STAYAPI_KEY" \
  -d "url=https://www.otelpuan.com/Turkler-Otel" \
  -d "check_in=2026-10-10" \
  -d "check_out=2026-10-12" \
  -d "adults=2"
```

RESPONSE200 OK
2.41s

```
{
  "success": true,
  "query": "Turkler",
  "hotels": [
    {
      "hotel_id": "25322",
      "name": "Türkler Otel",
      "url": "https://www.otelpuan.com/Turkler-Otel",
      "location": "Trabzon Şehir Merkezi"
    }
  ],
  "total": 1
}
```

```
{
  "success": true,
  "hotel_id": "25322",
  "name": "Türkler Otel",
  "url": "https://www.otelpuan.com/Turkler-Otel",
  "rating": 8.3,
  "rating_scale": 10,
  "review_count": 86
}
```

```
{
  "success": true,
  "hotel": {
    "hotel_id": "25322",
    "name": null,
    "url": null
  },
  "rating": null,
  "rating_scale": 10,
  "review_count": 1,
  "reviews": [
    {
      "id": "9000000",
      "reviewer_name": "Guest R***",
      "rating": 8.7,
      "review_date": null,
      "stay_date": "2026-01",
      "stay_date_text": "2026 Ocak",
      "title": "Good location",
      "text": "The location was convenient and the room was comfortable.",
      "travel_type": "COUPLE",
      "room_type": "DELUXE DUBLEX ODA"
    }
  ],
  "total": 1,
  "page_info": {
    "page": 1,
    "page_size": 10,
    "total_pages": 1,
    "has_next_page": false
  }
}
```

```
{
  "success": true,
  "url": "https://www.otelpuan.com/Turkler-Otel",
  "check_in": "2026-10-10",
  "check_out": "2026-10-12",
  "nights": 2,
  "adults": 2,
  "child_ages": [],
  "rooms": [
    {
      "name": "Standart Oda, Şehir Manzaralı, Klimalı",
      "night_count": 2,
      "offers": [
        {
          "board": {
            "code": "BB",
            "name": "Oda Kahvaltı"
          },
          "total_price": 5993.0,
          "base_price": 6659.0,
          "currency": "TRY",
          "daily_prices": [
            {
              "date": "2026-10-10",
              "price": 2996.71,
              "total_payment_amount": 2996.71,
              "tax_amount": 0.0,
              "currency": "TRY"
            },
            {
              "date": "2026-10-11",
              "price": 2996.7,
              "total_payment_amount": 2996.7,
              "tax_amount": 0.0,
              "currency": "TRY"
            }
          ],
          "non_refundable": false,
          "cancellation_policies": [
            {
              "from_date": "2026-09-28T17:44:34.699911305",
              "to_date": "2026-10-08T17:59:00",
              "amount": 0.0,
              "currency": "TRY",
              "free_cancellation": true
            },
            {
              "from_date": "2026-10-08T18:00:00",
              "to_date": "2026-10-10T14:00:00",
              "amount": 2547.2,
              "currency": "TRY",
              "free_cancellation": false
            }
          ],
          "occupancy": {
            "max_occupancy": 2,
            "max_adults": 2,
            "max_children": 0
          }
        }
      ]
    }
  ],
  "total": 1
}
```

[Start free with 50 requests](/users/sign_up)[Read the docs](/docs)

**99.9%** uptimeLive, not cached

Trusted by hospitality teams at

 ![EHL](/assets/logos/ehl-51e6ac832bd7a1b8c1f3c17ea48e7f7464f2aaead02a54b7cab2f2ee05b06c86.png) ![Skyscanner](/assets/logos/skyscanner-47f9fed400d4f828b0499892968e393aa1435240b8a573988d36fceb7f0433ae.png) ![Mews](/assets/logos/mews-e52288ca26c3e8d5e3878b522b92b521916a7df9c07556910102ad7bebbd216b.svg) ![CBRE](/assets/logos/cbre-f38211cf61a47f45d021ab25957f592fb2043bcff716539e3f2f54fd7fde91be.png) ![Ripe](/assets/logos/ripe-9fec989e25c3a18f2fec0357610bc743f12bf0e96cfa4824f457c4aa2c95db60.svg)

Overview
## What the Otelpuan API gives you.

Search hotel suggestions by name, or resolve a public hotel URL when you have one. Both return hotel\_id for guest reviews; search results go directly to reviews without a resolver call. Search is not exhaustive city inventory.

Reviews are paginated in groups of up to 10. Stay months use YYYY-MM; stay\_date\_text retains the source format. Publication dates are unavailable.

Keep the resolver result for the display name, URL, and aggregate rating. ID-based reviews return null for these fields and include individual guest ratings and the review count.

Use the hotel URL returned by Search for Rooms & prices. Supply stay dates and guests to read board plans, stay totals, daily prices, and cancellation terms. Reviews continue to use hotel\_id.

01

#### Start with a name or URL

Search hotel names or resolve a public hotel URL, then request reviews by ID.

02

#### Prices for your stay

Use the hotel URL, dates, and guests to check room offers and cancellation terms.

03

#### REST and MCP

Search, resolve URLs, check room prices, and read reviews with your StayAPI key.

[View pricing](#pricing)[View the docs](/docs)

Endpoints
## Every Otelpuan endpoint, one base URL.

Each returns normalized JSON in the same shape. Click any endpoint for parameters, an example response, and a live playground.

[GET Hotel Search /v1/otelpuan/search Hotel suggestions by name, with IDs, canonical URLs, and location labels.](/docs/endpoints/otelpuan/search)[GET URL to Hotel ID /v1/otelpuan/hotel/url-to-id Resolve a hotel URL to its ID, name, canonical URL, aggregate rating, and review count.](/docs/endpoints/otelpuan/url-to-id)[GET Hotel Reviews /v1/otelpuan/hotel/reviews Guest feedback, 0–10 ratings, stay months, and pagination by hotel ID.](/docs/endpoints/otelpuan/hotel-reviews)[GET Rooms & prices /v1/otelpuan/hotel/rooms Room offers, board plans, stay totals, daily prices, cancellation terms, and occupancy.](/docs/endpoints/otelpuan/rooms)

[Browse the full Otelpuan docs](/docs)

Use cases
## What teams build on the Otelpuan API.

The same endpoints, pointed at different jobs. These are the ones we see most.

01

#### Guest feedback summaries.

Summarize recurring themes in the returned comments.

02

#### Rating analysis.

Keep individual guest scores alongside the aggregate 0–10 rating.

03

#### Review collection.

Request pages in sequence and use review IDs to identify records.

04

#### Room comparison.

Compare board plans and cancellation terms for the same stay and guest count.

Also over MCP
## Otelpuan data, inside your AI agent.

The same endpoints are exposed as MCP tools. Connect Claude, Cursor, or Claude Code, ask in plain English, and the agent calls the tool and answers from live Otelpuan data.

[See the MCP setup](/mcp)[Read the MCP docs](/docs/mcp)

Pricing
## 50 free requests on signup. Pick a plan when you need more.

Flat monthly plans, every endpoint included on every plan. **1 request = 1 credit.** No per-endpoint multipliers, no surprise overages.

MonthlyQuarterly

01Free

$0to start

50 credits on signup

- **50** free requests
- Every endpoint included
- No credit card required
- Same schema as paid

[Start free](/users/sign_up)

02Basic

$49 per month 

1,500 requests / mo

- **1,500** requests / month
- Every endpoint included
- Per-endpoint usage dashboard
- Email support

[Start Basic](/users/sign_up)

Most popular
03Startup

$149 per month 

10,000 / mo25,000 / mo

- **10,000** requests / month
- Every endpoint included
- Per-endpoint usage dashboard
- Email support

[Start building](/users/sign_up)

50% off
04Scale

~~$900~~ $450 per month 

100,000 requests / mo

- **100,000** requests / month
- Every endpoint included
- Per-endpoint usage dashboard
- Priority email support

[Start scaling](/users/sign_up)

05Custom

Let's talk

100K+ requests / mo

- **100K+** requests / month
- Volume rate on the call
- Per-endpoint usage dashboard
- Priority email + Slack support

[Book a scoping call](/book-demo)

Every plan ships every endpoint. Same uptime, same schema, same response time.

Questions
## What people ask about the Otelpuan API.

Don't see your question? Email us at [info@stayapi.com](mailto:info@stayapi.com).

#How do I get Otelpuan hotel reviews?

Send hotel\_id to GET /v1/otelpuan/hotel/reviews with your X-API-Key header. If you only have a public hotel URL, resolve it with GET /v1/otelpuan/hotel/url-to-id first.

#How many reviews are returned per page?

Up to 10. Start with page=1 and follow page\_info.has\_next\_page.

#Are review publication dates available?

No. review\_date is null. stay\_date is a YYYY-MM stay month; stay\_date\_text preserves source text such as 2026 Ocak and describes the stay, not publication.

#Can I filter or sort the reviews?

No sorting or filtering parameters are supported. The endpoint preserves the source order.

#How do I check rooms and prices?

Pass the hotel URL from Search, check\_in, check\_out, and guests to GET /v1/otelpuan/hotel/rooms or otelpuan\_hotel\_rooms. Adults default to 2; optional child\_ages accepts up to 4 comma-separated ages from 0–16. Preserve the returned total\_price; daily amounts may not sum to the provider stay total; both are preserved as supplied. An empty rooms array is a successful result.

#Does search return every hotel in a city?

No. Search returns hotel-name suggestions. There are no page, limit, or filter controls; an empty match succeeds with an empty hotels array.

## Two ways to start.

Both end with live Otelpuan data in your stack. The fast path is on the left.

01 · the fast path

### Try it free

50 free requests after sign up. Fastest way to see if the schema fits.

[Start free](/users/sign_up)
- Live API key in 30 seconds
- No credit card required
- Same schema as paid

02 · the scoped path

### Book a scoping call

15 minutes. Volume + endpoint mix. Walk out with a quote.

[Book a demo](/book-demo)
- Quote on the call, not after
- Engineering, not sales
- No deck, no slides
