API Documentation

API Documentation

Complete API reference for accessing video content, search functionality, and trending data.

Base URL: https://hornyhill.com/api/getInfo
Rate Limit: 100,000 requests per day
Authentication: API Key required

Authentication

API Key

All requests require a valid API key passed as a query parameter.

Parameter Type Required Description
apikey string Required Your API authentication key
⚠️ Important: Keep your API key secure. Do not share it publicly.

Endpoints

Get Single Movie Information

GET /api/getInfo?type=movieinfo

Retrieve detailed information about a specific movie by its ID. The ID can be extracted from the video URL (e.g., https://hornyhill.com/watch/12345-example-movie - the ID is 12345).

Parameters

Parameter Type Required Description
apikey string Required Your API key
type string Required Set to movieinfo
id integer Required Unique movie ID
dl boolean Optional Set to true to include download URLs in response

Example Request

GET /api/getInfo?apikey=YOUR_API_KEY&type=movieinfo&id=12345

Example Request with Download URLs

GET /api/getInfo?apikey=YOUR_API_KEY&type=movieinfo&id=12345&dl=true

Response

{
  "video": {
    "id": 12345,
    "title": "Example Movie Title",
    "description": "Watch Example Movie Title(2024) || English || Runtime: 120 || Categories: action, drama || hornyhill.com",
    "poster": "https://example.com/poster.jpg",
    "url": "https://hornyhill.com/watch/12345-example-movie-title",
    "duration": 7200,
    "released_on": "2024-01-15",
    "indexed_on": "2024-01-16 10:30:00",
    "time_ago": "2 months ago",
    "views": 45000,
    "likes": 15000,
    "dislikes": 7500,
    "cast": "lanna",
    "studio": "Example Studio",
    "tags": "action, drama, thriller",
    "quality": "HD",
    "embed_url": "https://hornyhill.com/player/embed/?id=12345",
    "year": 2024,
    "type": "movie",
    "status": "public",
    "dl_url": [
      {"file": "...144P.mp4", "label": "144P", "type": "video/mp4"},
      {"file": "...240P.mp4", "label": "240P", "type": "video/mp4"},
      {"file": "...360P.mp4", "label": "360P", "type": "video/mp4"},
      {"file": "...480P.mp4", "label": "480P", "type": "video/mp4"},
      {"file": "...720P.mp4", "label": "720P", "type": "video/mp4"},
      {"file": "...1080P.mp4", "label": "1080P", "type": "video/mp4"},
      {"file": "...1440P.mp4", "label": "1440P", "type": "video/mp4"},
      {"file": "...2160P.mp4", "label": "2160P", "type": "video/mp4"}
    ]
  }
}
💡 Note: The dl_url field contains an array of available download sources when the dl=true parameter is included in the request. Without this parameter, dl_url will be null. Use this feature to provide direct download links to users.
💡 Note:
 HornyHill operates as a search engine and video indexer, not hosting any content ourselves. We aggregate and index content from third-party sources. As a result, download links are dynamically scraped from those external websites. In some cases, certain videos may not return a direct MP4 link — instead, they might return an M3U8 stream or no downloadable source at all, depending on the originating host’s availability and structure.
Search Movies

GET /api/getInfo?type=search

Search for movies using a search term. Returns paginated results.

Parameters

Parameter Type Required Description
apikey string Required Your API key
type string Required Set to search
title string Required Search term/query
page integer Optional Page number (default: 1)
limit integer Optional Results per page (default: 8)

Example Request

GET /api/getInfo?apikey=YOUR_API_KEY&type=search&title=action&page=1&limit=10

Response

{
  "page": 1,
  "next": 2,
  "count": 10,
  "results": [
    {
      "id": 12345,
      "title": "Action Movie",
      "description": "Watch Action Movie(2024) || English || Runtime: 120 Min || Categories: action || hornyhill.com",
      "poster": "https://example.com/uploads/image.png",
      "url": "https://hornyhill.com/watch/12345-action-movie",
      "duration": 7200,
      "released_at": "2024-01-15",
      "indexed_at": "2024-01-16 10:30:00",
      "time_ago": "2 months ago",
      "views": 45000,
      "likes": 15000,
      "dislikes": 7500,
      "cast": "Lann, Rhodes",
      "studio": "Example Studio",
      "tags": "action, adventure, adult",
      "quality": "HD",
      "embed_url": "https://hornyhill.com/player/embed/?id=12345",
      "year": 2024,
      "type": "movie",
      "status": "public"
    }
  ]
}
Get Trending Movies by Country

GET /api/getInfo?type=trendingin

Retrieve trending movies for a specific country. Country is automatically detected from IP or can be specified.

Parameters

Parameter Type Required Description
apikey string Required Your API key
type string Required Set to trendingin
countryid string Optional Country code (e.g., US, GB, DE). Auto-detected if not provided
limit integer Optional Number of results (default: 8)

Example Request

GET /api/getInfo?apikey=YOUR_API_KEY&type=trendingin&countryid=US&limit=10

Response

{
  "page": 1,
  "next": 2,
  "count": 10,
  "results": [ ... ]
}
Get Global Trending Movies

GET /api/getInfo?type=trending

Retrieve globally trending movies across all regions.

Parameters

Parameter Type Required Description
apikey string Required Your API key
type string Required Set to trending
limit integer Optional Number of results (default: 8)

Example Request

GET /api/getInfo?apikey=YOUR_API_KEY&type=trending&limit=20

Response

{
  "page": 1,
  "next": 2,
  "count": 20,
  "results": [ ... ]
}
Get Latest Movies

GET /api/getInfo?type=latest

Retrieve the most recently released movies.

Parameters

Parameter Type Required Description
apikey string Required Your API key
type string Required Set to latest
limit integer Optional Number of results (default: 8)

Example Request

GET /api/getInfo?apikey=YOUR_API_KEY&type=latest&limit=15

Response

{
  "page": 1,
  "next": 2,
  "count": 15,
  "results": [ ... ]
}

Response Fields

Movie Object Fields
Field Type Description
id integer Unique movie identifier
title string Movie title
description string Full movie description with metadata
poster string URL to movie poster image
url string Direct link to watch the movie
duration integer Duration in seconds
released_at string Release date (YYYY-MM-DD)
indexed_at string Date added to database (YYYY-MM-DD HH:MM:SS)
time_ago string Human-readable time since release
views integer View count
likes integer Number of likes
dislikes integer Number of dislikes
cast string Cast information
studio string Production studio
tags string Comma-separated tags/categories
quality string Video quality (e.g., HD, 4K)
embed_url string Embeddable player URL
year integer Release year
type string Content type (e.g., movie, series)
status string Content status (public, inactive)
dl_url array/null Array of download source URLs. Only included when dl=true parameter is set, otherwise returns null

Error Responses

Error Handling
Error Type HTTP Code Response
Invalid API Key 401 {"error": "Invalid API key"}
Rate Limit Exceeded 429 {"error": "Rate limit exceeded"}
Video Not Found 404 {"error": "Video not found"}
No Results 200 {"results": []}

Rate Limiting

Request Limits

API requests are limited to 100,000 requests per day per API key.

  • Rate limits are calculated on a rolling 24-hour basis
  • Exceeded limits return a 429 error response
  • Cache headers are included in responses to optimize request usage
💡 Tip: Implement caching on your end to minimize API calls and stay within rate limits.

Best Practices

Optimization Guidelines
  • Cache responses: API responses include caching hints. Store results locally when possible.
  • Use pagination: For search and listing endpoints, use the page and limit parameters effectively.
  • Handle errors gracefully: Always check for error responses and implement retry logic with exponential backoff.
  • Secure your API key: Never expose your API key in client-side code or public repositories.
  • Monitor rate limits: Track your daily usage to avoid hitting the rate limit.