Exploring the VirusTotal Public API with JavaScript

If you’re interested in exploring data related to viruses and malware, you’ll want to check out the VirusTotal Public API! This HTTP-based API allows you to interact with VirusTotal’s vast collection of virus samples, URL information, IP addresses, and more.

In this blog post, we’ll explore how to use the VirusTotal Public API with JavaScript. We’ll walk through some basic examples of how to make HTTP requests to the API using XMLHttpRequest and fetch, and we’ll look at how to authenticate your requests using an API key.

Getting Started

Before we get started, we need to make sure you have an API key. If you don’t already have one, you can sign up for a free account on VirusTotal’s website. Once you create an account, navigate to the API section and click “Get your API key” to generate a new key.

Now that we have our API key, let’s start exploring the API!

Making HTTP Requests with XMLHttpRequest

One way to interact with the VirusTotal Public API is by making HTTP requests using XMLHttpRequest. To use this method, we’ll create a new XMLHttpRequest object and specify the HTTP verb (GET, POST, etc.) and the URL we want to request. We’ll also add any query parameters to the URL.

const endpoint = '';
const apiKey = 'YOUR_API_KEY';
const resourceHash = 'HASH_OF_THE_FILE_YOU_WANT_TO_LOOK_UP';

const xhr = new XMLHttpRequest();
const url = `${endpoint}?resource=${resourceHash}&apikey=${apiKey}`;'GET', url, true);
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        const response = JSON.parse(xhr.responseText);

In this example, we’re requesting information about a file with a particular hash (specified by resourceHash). We’re passing in our API key as a query parameter, and we’re setting the readyStateChange function to log the response to the console.

Authenticating with fetch

Another way to make HTTP requests to the VirusTotal Public API is by using the fetch API. In this example, we’ll use the Headers constructor to set our API key as a X-Apikey header on the request.

const endpoint = '';
const apiKey = 'YOUR_API_KEY';
const ipAddress = 'IP_ADDRESS_YOU_WANT_TO_LOOK_UP';

fetch(`${endpoint}?ip=${ipAddress}`, {
    headers: new Headers({
        'X-Apikey': apiKey,
    .then((response) => response.json())
    .then((data) => console.log(data));

This example fetches information about an IP address. We’re passing in our API key as a X-Apikey header, and we’re using the json() method to convert the response to a JSON object. Finally, we’re logging the result to the console.

Wrapping Up

That’s it for our quick tour of the VirusTotal Public API! We’ve explored how to use both XMLHttpRequest and fetch to interact with the API, and we’ve looked at how to authenticate our requests using an API key.

To dive deeper into the VirusTotal Public API, check out the official documentation. Happy coding!