API.porn Documentation

Technology Overview

API.PORN provides a RESTful API on HTTP requests and JSON responses.


Endpoints

The API is accessed by making HTTP request to endpoints accessible via
standard HTTP (port 80)

http://data.api.porn


Authentication

An API.PORN KEY is required to access the data. This api key is attached to
a rate limit. Sharing it among multiple applications or users will cause your
access to be limited faster.

http://data.api.porn?api_key=xxx

  • api_key: (string) the api key. It is required to query the API.

Rate Limit

Rate limiting of the API is primarily considered on a per-user basis,
or more accurately described, per API.PORN KEY in your control.

Login to your account to view the limit for your API.PORN KEY .

To request a per application api_key, please contact us.

If you need more access, please contact us.

The rate limit is attached to your API.PORN KEY . Sharing it among
multiple applications or users will cause your access to be limited faster.


Responses

All successful requests return a JSON response with at least data key which contains the data of the results.
Some other data may be provided such as page, per_page, total, total_pages.

{
    data: [ ... ],
    page: 1,
    per_page: 10,
    total: 2000,
    total_pages: 200
}
  • data: (array) contains the items on this page
  • page: (int) the current page
  • per_page: (int) the total items per page
  • total_pages: (int) total items
  • notice: (string) A notice message about the request if there is one.
  • query: (string) the keywords that created a search, ie: ?q=hot

Error

All errors return a json object with the key error set to true.
message and code are also provided for more details.

{
    code: 404,
    message: "No items found",
    error: true
}
  • code: (int) the error code
  • error: (bool) a boolean set to True. It will always be true on error.
  • message: (string) the error message

Pagination

Each request return a set amount of items per page. To go other pages
you can use the params page.

http://data.api.porn/videos/?page=2

http://data.api.porn/videos/?q=beauty&page=2

  • page: (int) the page number

API Endpoints

/

This returns the basic api info

{
    data: {
        api_name: "API.PORN",
        api_version: "1.0.0",
        documentation: "http://api.porn/doc/",
        url: "http://api.porn"
    }
}

/count/

Get the count of all data by types

Endpoint: http://data.api.porn/count/
Method: GET

{
    data: {
        cams: 2008,
        images: 27128,
        videos: 43195
    }
}

Data response:

  • cams: (int) total active cams
  • images: (int) total images available
  • videos: (int) total videos available

/videos/

To query videos.

Endpoint: http://data.api.porn/videos/
Method: GET

Response:

{
    data: [
        {
            date: "Thu, 05 May 2016 19:52:23 GMT",
            duration: "07:23",
            id: 70634,
            image_url: "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/12.jpg",
            slug: "guest-with-hige-cock-fucks-hot-russian-amateur-blonde",
            embed_url: "http://www.pornhub.com/embed/ph572b74c842e55",
            source: "http://www.pornhub.com/view_video.php?viewkey=ph572b74c842e55",
            channel: "straight",
            tags: [
                "amateur",
                "blowjobs",
                "doggy style",
                "hd videos",
                "russian",
                "blonde amateur",
                "blonde fucks",
                "guest",
                "hot blonde",
                "hot russian",
                "hot russian blonde",
                "russian blonde"
            ],
            thumbnails: [
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/1.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/2.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/3.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/4.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/5.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/6.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/7.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/8.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/9.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/10.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/11.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/12.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/13.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/14.jpg",
                "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/15.jpg"
            ],
            title: "Guest with hige cock fucks hot russian amateur blonde",
            type: "video",
            url: "http://rawxxxvideos.com/watch/70634/"
        },
        ...

    ],
    page: 1,
    per_page: 10,
    query: null,
    total: 2000,
    total_pages: 200
}

Params:

  • q: (string) keywords to query the API
  • channel: (str) the channel to query only. Options: straight, gay, trans
  • page: (int) the page number
  • ids: video ids separated by comma, to include in the results
  • mlt: (int) (more like this) video id to query videos similar to it
  • exclude_ids: video ids separated by comma, to not include in the results

Array data response:

  • id: (int) the video id
  • title: Title
  • channel: Channel
  • date: Date in RFC822 format: D, d M y H:i:s O
  • slug: Unique slug
  • type: type of the item
  • image_url: The main image url
  • duration: Duration in minutes of the video
  • tags: Array of tags and keywords
  • thumbnails: Array of all thumbnails possible to create a rotating video
  • url: A watchable url
  • embed_url: the embed url
  • source: the original source of the video

/videos/#id/

To get a single video

Endpoint: http://data.api.porn/videos/#id
Method: GET

{
    data: {
    date: "Thu, 05 May 2016 19:52:23 GMT",
    duration: "07:23",
    embed_url: "http://www.pornhub.com/embed/ph572b74c842e55",
    id: 70634,
    image_url: "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/12.jpg",
    slug: "guest-with-hige-cock-fucks-hot-russian-amateur-blonde",
    source: "http://www.pornhub.com/view_video.php?viewkey=ph572b74c842e55",
    channel: "straight",
    tags: [
        "amateur",
        "blowjobs",
        "doggy style",
        "hd videos",
        "russian",
        "blonde amateur",
        "blonde fucks",
        "guest",
        "hot blonde",
        "hot russian",
        "hot russian blonde",
        "russian blonde"
    ],
    thumbnails: [
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/1.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/2.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/3.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/4.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/5.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/6.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/7.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/8.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/9.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/10.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/11.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/12.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/13.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/14.jpg",
        "http://i1.cdn2b.image.pornhub.phncdn.com/.../original/15.jpg"
    ],
        title: "Guest with hige cock fucks hot russian amateur blonde",
        type: "video",
        url: "http://rawxxxvideos.com/watch/70634"
    }
}
  • id: (int) the video id
  • title: Title
  • channel: Channel
  • date: Date in RFC822 format: D, d M y H:i:s O
  • slug: Unique slug
  • type: type of the item
  • image_url: The main image url
  • duration: Duration in minutes of the video
  • tags: Array of tags and keywords
  • thumbnails: Array of all thumbnails possible to create a rotating video
  • url: A watchable url
  • embed_url: the embed url
  • source: the original source of the video

/images/

To query images.

Endpoint: http://data.api.porn/images/
Method: GET

{
    data: [
        {
            date: "Thu, 05 May 2016 19:53:27 GMT",
            id: 70641,
            image_url: "http://cdn.api.porn/r.images/396f.jpg",
            slug: "cocomi-sakura",
            channel: "straight",
            tags: [
                "softcore"
            ],
            title: "Cocomi Sakura",
            type: "image",
            url: "http://cdn.api.porn/r.image/70641-cocomi-sakura"
        },
        ...
    ],
    page: 1,
    per_page: 10,
    query: null,
    total: 2000,
    total_pages: 200
}

Params:

  • q: (string) keywords to query the API
  • channel: (str) the channel to query only. Options: straight, gay, trans
  • page: (int) the page number
  • ids: image ids separated by comma, to include in the results
  • mlt: (int) (more like this) image id to query images similar to it
  • exclude_ids: image ids separated by comma, to not include in the results

Data response:

  • id: (int) the image id
  • title: Title
  • channel: Channel
  • date: Date in RFC822 format: D, d M y H:i:s O
  • slug: Unique slug
  • type: type of the item
  • image_url: The main image url
  • tags: Array of tags and keywords
  • url: A watchable url

/images/#id/

To get a single image

Endpoint: http://data.api.porn/images/#id/
Method: GET

{
    data: {
        date: "Thu, 05 May 2016 19:53:27 GMT",
        id: 70641,
        image_url: "http://cdn.api.porn/r.images/396f.jpg",
        slug: "cocomi-sakura",
        channel: "straight",
        tags: [
            "softcore"
        ],
        title: "Cocomi Sakura",
        type: "image",
        url: "http://cdn.api.porn/r.image/70641-cocomi-sakura"
    }
}

Data response:

  • id: (int) the image id
  • title: Title
  • channel: Channel
  • date: Date in RFC822 format: D, d M y H:i:s O
  • slug: Unique slug
  • type: type of the item
  • image_url: The main image url
  • tags: Array of tags and keywords
  • url: A watchable url

/cams/

To query live cams.

Endpoint: http://data.api.porn/cams/
Method: GET

{
    channel: "All",
    data: [
        {
            age: 26,
            channel: "Couple",
            image_url: "https://cdn.api.porn/image/xyz.jpg",
            languages: "English",
            location: "heaven",
            name: "JaneDoe",
            status: "public",
            time_online: "8:43:32",
            title: "#ohmibod #suck #blowjob #deepthroat [Drain rate: 1 token every 3 seconds]",
            type: "cam",
            url: "http://rawxxxvideos.com/cams/janedoe",
            username: "janedoe",
            viewers: 2470,
            embed_url: "http://livecams.api.porn/janedoe",
            source: "http://livecams.api.porn/janedoe"
        },
        ...
    ],
    page: 1,
    per_page: 10,
    total: 2008,
    total_pages: 201
}

Params:

  • channel: (string) to query a specific channel. Option: male, female, couple, trans
  • page: (int) the page number

Data response:

  • username: the username of the cam user
  • name: The cam user's name
  • age: the age of the cam user
  • channel: the channel the camp belongs too
  • language: the language of the cam user
  • location: Location
  • status: The status of the cam. Public or private
  • time_online: The time the cam user has been online
  • title: Title
  • type: type of the item
  • image_url: The main image url
  • url: A watchable url
  • viewers: Total viewers watching the cams
  • embed_url: Url to embed the live cam
  • source: Url of the original content

/cams/#username/

Get a user's live cam.

Endpoint: http://data.api.porn/cams/#username/
Method: GET

{
    data: 
        {
            age: 26,
            channel: "Couple",
            image_url: "https://cdn.api.porn/image/xyz.jpg",
            languages: "English",
            location: "heaven",
            name: "JaneDoe",
            status: "public",
            time_online: "8:43:32",
            title: "#ohmibod #suck #blowjob #deepthroat [Drain rate: 1 token every 3 seconds]",
            type: "cam",
            url: "http://rawxxxvideos.com/cams/janedoe",
            username: "janedoe",
            viewers: 2470,
            embed_url: "http://livecams.api.porn/janedoe",
            source: "http://livecams.api.porn/janedoe"
        }
}

Data response:

  • username: the username of the cam user
  • name: The cam user's name
  • age: the age of the cam user
  • channel: the channel the camp belongs too
  • language: the language of the cam user
  • location: Location
  • status: The status of the cam. Public or private
  • time_online: The time the cam user has been online
  • title: Title
  • type: type of the item
  • image_url: The main image url
  • url: A watchable url
  • viewers: Total viewers watching the cams
  • embed_url: Url to embed the live cam
  • source: Url of the original content

/cams/channels/

List the live cams channels and total of active broadcasters

Endpoint: http://data.api.porn/cams/channels/
Method: GET

{
    data: [
        {
            name: "Female",
            total: 993
        },
        {
            name: "Male",
            total: 817
        },
        {
            name: "Trans",
            total: 131
        },
        {
            name: "Couple",
            total: 67
        }
    ]
}

Data response:

  • name: Channel name
  • total: Total of active broadcasters