View our

Screenshot API Code Examples

Please read the API documentation before you start using our APIs in production.
The API key used in these examples is for demonstrative purposes and can be used only to check whoapi.com

PHP Code Example

Basic PHP example using cURL. We will get a screenshot for the domain name “whoapi.com”.

<?php
// Prepare vars
$fullurl    = "whoapi.com";     // page url
$r          = "screenshot";     // API request type
$apikey     = "demokey";        // your API key
$process    = "thumb";          // thumb image only (first viewport without scroll)
$resolution = "1366x768";       // screen resolution to use

// API call
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.whoapi.com?apikey=$apikey&r=$r&fullurl=$fullurl&process=$process&resolution=$resolution&asap=&node_geo=&delay=&thumbwidth=&thumbheight=");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = json_decode(curl_exec($ch), true);
curl_close($ch);

// Success
if (isset($output['status']) && $output['status'] == 0) {
    echo "Success. Small thumbnail for \"$fullurl\": ".$output['thumbnail_https'];
    
// API error
} elseif (!empty($output['status_desc'])) {
    echo "API reports error: ".$output['status_desc'];
    
// Unknown error
} else {
    echo "Unknown error";
}
?>

Javascript Code Example

We will get a screenshot for the domain name “whoapi.com”.

<script type="text/javascript">
var fullurl    = "whoapi.com";            // page url
var r          = "screenshot";            // API request type
var apikey     = "demokey";               // your API key
var process    = "thumb";                 // thumb image only (first viewport without scroll)
var resolution = "1366x768";              // screen resolution to use

var xhr = new XMLHttpRequest();
xhr.open("GET", 'https://api.whoapi.com?apikey='+apikey+'&r='+r+'&fullurl='+fullurl+'&process='+process+'&resolution='+resolution+'&asap=&node_geo=&delay=&thumbwidth=&thumbheight=', true);
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var json = JSON.parse(xhr.responseText);
        if (json.status == 0) {
            document.getElementById("result").innerHTML = "Success. Small thumbnail: " + json.thumbnail_https;
        } else {
            document.getElementById("result").innerHTML = "API reports error: " + json.status_desc;
        }
    } else {
        document.getElementById("result").innerHTML = "Unknown error";
    }
};
xhr.send();
</script>
<div id="result">please wait...</div>

Ruby Code Example

We will get a screenshot for the domain name “whoapi.com”.

require 'open-uri'
require 'json'

fullurl    = "whoapi.com";            # page url
r          = "screenshot";            # API request type
apikey     = "demokey";               # your API key
process    = "thumb";                 # thumb image only (first viewport without scroll)
resolution = "1366x768";              # screen resolution to use

output = JSON.parse(URI.open("https://api.whoapi.com?apikey=#{apikey}&r=#{r}&fullurl=#{fullurl}&process=#{process}&resolution=#{resolution}&asap=&node_geo=&delay=&thumbwidth=&thumbheight=").read)

if output["status"].to_i == 0
 puts "Success. Small thumbnail: " + output["thumbnail_https"]
elsif !output["status_desc"].nil?
 puts "API reports error: " + output["status_desc"]
else
 puts "Unknown error"
end

Python Code Example

We will get a screenshot for the domain name “whoapi.com”.

#!/usr/bin/env python
import requests


def whoapi_request(fullurl, r, apikey, process, resolution) -> None:

    res = requests.get('https://api.whoapi.com', dict(
        fullurl=fullurl,
        r=r,
        apikey=apikey,
        process=process,
        resolution=resolution))

    if res.status_code == 200:
        data = res.json()
        if int(data['status']) == 0:
            print("Success. Small thumbnail: " + data["thumbnail_https"])
        else:
            print("API reports error: " + data['status_desc'])
    else:
        raise Exception('Unexpected status code %d' % res.status_code)


fullurl = 'whoapi.com'      # page url
r = 'screenshot'            # API request type
apikey = 'demokey'          # key
process = "thumb";          # thumb image only (first viewport without scroll)
resolution = "1366x768";    # screen resolution to use

whoapi_request(fullurl, r, apikey, process, resolution)

Objective C Code Example

We will get a screenshot for the domain name “whoapi.com”.

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    NSString *fullurl    = @"whoapi.com";         // page url
    NSString *r          = @"screenshot";         // API request type
    NSString *apikey     = @"demokey";            // your API key
    NSString *process    = @"thumb";              // thumb image only (first viewport without scroll)
    NSString *resolution = @"1366x768";           // screen resolution to use
    
    NSString *urlAsString = [NSString stringWithFormat:@
    "https://api.whoapi.com/?fullurl=%@&r=%@&apikey=%@&process=%@&resolution=%@", fullurl, r, apikey, process, resolution];
    
    NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlAsString]];
    [urlRequest setHTTPMethod:@"GET"];
    NSURLSession *session = [NSURLSession sharedSession];
    
    // Semaphore used only for the debug purpose
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
    {
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        if(httpResponse.statusCode == 200)
        {
            NSError *parseError = nil;
            NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
            
            NSNumber *status;
            if([responseDictionary[@"status"] isKindOfClass:[NSString class]]) {
                NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
                f.numberStyle = NSNumberFormatterDecimalStyle;
                status = [f numberFromString:responseDictionary[@"status"]];
            } else {
                status = responseDictionary[@"status"];
            }
            if([status isEqualToNumber:@0])
            {
                NSLog(@"Success. Small thumbnail: %@", responseDictionary[@"thumbnail_https"]);
            } else {
                NSLog(@"API reports error: %@", responseDictionary[@"status_desc"]);
            }
        }
        else
        {
            NSLog(@"Unexpected status code\n");
        }
        
        // Semaphore used only for the debug purpose
        dispatch_semaphore_signal(sema);
    }];
    [dataTask resume];
    
    // Semaphore used only for the debug purpose
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    
    return 0;
}

C#(.NET) Code Example

We will get a screenshot for the domain name “whoapi.com”.

using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;

public class Program
{
    public static void Main()
    {
        string apiType = "screenshot"; // API request type
        string fullurl = "whoapi.com"; // page url
        string apiKey = "demokey"; // api key
        string process = "thumb"; // thumb image only (first viewport without scroll)
        string resolution = "1366x768"; // screen resolution to use

        WebRequest request = WebRequest.Create(String.Format("https://api.whoapi.com/?fullurl={0}&r={1}&apikey={2}&process={3}&resolution={4}", fullurl, apiType, apiKey, process, resolution));
        WebResponse response = request.GetResponse();

        StreamReader reader = new StreamReader(response.GetResponseStream());
        string responseFromServer = reader.ReadToEnd();

        JObject json = JObject.Parse(responseFromServer);

        if (json.Value<int>("status") == 0)
        {
            Console.WriteLine(String.Format("Success. Small thumbnail: {0}. ", json["thumbnail_https"]));
        }
        else
        {
            Console.WriteLine(String.Format("API reports error: {0}. ", json["status_desc"]));
        }
    }
}

Java Code Example

We will get a screenshot for the domain name “whoapi.com”.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;

class Main {
    public static void main(String args[]) {
      try {
        // Set data
        String fullurl = "whoapi.com"; // page url
        String rtype = "screenshot"; // API request type
        String apikey = "demokey"; // your API key
        String process = "thumb"; // thumb image only (first viewport without scroll)
        String resolution = "1366x768"; // screen resolution to use

        // Send request to API
        URL obj = new URL("https://api.whoapi.com/?fullurl=" + fullurl + "&r=" + rtype + "&apikey=" + apikey + "&process=" + process + "&resolution=" + resolution);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        
        // Validate HTTP response code
        int responseCode = con.getResponseCode();
        if (responseCode != 200) {
          System.out.println("HTTP request error, code: " + responseCode);
          return;
        }
        
        // Read API reply
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
          response.append(inputLine);
        }
        in.close();
        
        // Get JSON
        JSONObject myResponse = new JSONObject(response.toString());
        int status = myResponse.getInt("status");
        String statusDesc = myResponse.getString("status_desc");
        
        // Validate request status
        if (status != 0) {
          System.out.println("API reports error: " + statusDesc);
          return;
        }
        
        String thumbURL = myResponse.getString("thumbnail_https");
        
        System.out.println("Success. Small thumbnail: " + thumbURL);
        
      } catch (Exception e) {
          e.printStackTrace();
      }
    }
}

Summary

The provided code examples demonstrate how to make API requests to the WhoAPI service to capture a screenshot of a specified webpage using different programming languages. The code examples use various HTTP client libraries (such as cURL, XMLHttpRequest, open-uri, requests, etc.) to send HTTP GET requests to the WhoAPI Screenshot API endpoint.

The general flow of the code is as follows:

  1. It sets up the necessary variables, including the URL of the webpage to capture a screenshot of, the API request type (screenshot), the API key, the process type (e.g., thumb for a thumbnail image), and the resolution of the screenshot.
  2. It constructs the API request URL with the appropriate parameters.
  3. It sends an HTTP GET request to the API endpoint using the provided HTTP client library.
  4. It receives the API response and processes it.
  5. It handles different scenarios based on the response status.

For example, if the response status is 0, indicating success, the code may display the URL of the captured thumbnail image. If the response status is non-zero, indicating an error, the code may display an error message with the corresponding status description.

It’s important to review the API documentation provided by WhoAPI to understand the available request types, response formats, and any specific requirements or limitations of the API.

Please note that the provided code snippets assume the availability of the WhoAPI service and may require modifications to the API endpoint or authentication mechanism if there are any changes to the service. It’s also important to use a valid API key provided by WhoAPI to authenticate the requests properly.