search-movies-series-api.md
Search Movies & Series API
Overview
Search endpoints for movies and series content. The search is case-insensitive, accent-insensitive, and supports multi-word queries (all words must match in the title or description).
Endpoints
Search Movies
| Client | Method | URL |
|---|---|---|
| Web | GET | /client/v1/contents/movies/search |
| TV | GET | /tv/v1/contents/movies/search |
| Mobile | GET | /mobile/v1/contents/movies/search |
Search Series
| Client | Method | URL |
|---|---|---|
| Web | GET | /client/v1/contents/series/search |
| TV | GET | /tv/v1/contents/series/search |
| Mobile | GET | /mobile/v1/contents/series/search |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q |
string | Yes | Search query text |
page |
int | Yes | Page number (starts at 1) |
pageSize |
int | Yes | Items per page (max 15) |
Example Request
GET /client/v1/contents/movies/search?q=egjeli episodi&page=1&pageSize=10
Search Behavior
- The query is split into individual words
- Each word is matched against title and description fields
- All words must match (AND logic) -- each word can match in either field (OR logic)
- Matching is case-insensitive and accent-insensitive (e.g. "cafe" matches "Café")
pagevalues below 1 are treated as 1pageSizeis capped between 1 and 15
Example
Searching "egjeli episodi 1" matches a movie titled "Stupcat Egjeli 2017 - Episodi 1" because all three words ("egjeli", "episodi", "1") are found in the title, even though they are not adjacent.
Response Format
Both endpoints return the same paginated wrapper:
{
"items": [ ... ],
"totalCount": 42
}
Movie Item
{
"id": "abc123",
"title": "Stupcat Egjeli 2017 - Episodi 1",
"description": "...",
"handle": "stupcat-egjeli-2017",
"type": 1,
"visibility": 1,
"releaseDate": "2017-06-15T00:00:00Z",
"metadata": {},
"thumbnail": "https://cdn.example.com/thumb.jpg",
"banner": "https://cdn.example.com/banner.jpg",
"landscapeBanner": "https://cdn.example.com/landscape.jpg",
"mobileBanner": "https://cdn.example.com/mobile.jpg",
"payToViewConfig": {
"isLocked": false,
"payToViewProductId": null
},
"payToView": null
}
Series Item
{
"id": "xyz789",
"title": "Stupcat",
"description": "...",
"handle": "stupcat-series",
"type": 2,
"visibility": 1,
"releaseDate": "2015-01-01T00:00:00Z",
"thumbnail": "https://cdn.example.com/thumb.jpg",
"banner": "https://cdn.example.com/banner.jpg",
"landscapeBanner": "https://cdn.example.com/landscape.jpg",
"mobileBanner": "https://cdn.example.com/mobile.jpg",
"payToViewConfig": {
"isLocked": false,
"payToViewProductId": null
},
"payToView": null,
"metrics": {
"totalSeasons": 3,
"totalEpisodes": 24
}
}
Type Reference
ContentType (type field)
| Value | Meaning |
|---|---|
| 1 | Movie |
| 2 | Series |
VisibilityStatus (visibility field)
| Value | Meaning |
|---|---|
| 1 | Public |
Only public content is returned by these search endpoints.
Notes
- Results are ordered by creation date (newest first)
- Only publicly visible content is returned
- Series results only include series that have at least one season with episodes
- The
metricsfield (withtotalSeasonsandtotalEpisodes) is only present in series results, not movie results - The
payToViewfield is alwaysnullin search results (access info is resolved on the detail endpoint) - These endpoints follow the same pattern as the existing channel search (
/channels/search)