Next free-source hunt
We check for new free data every weekday.
Datasets / Cyber Threat
docs.virustotal.com/

VirusTotal Public API v3

Freemiumauth: free API keyProvider terms#cyber-threat#threat-intel#risk#network-data✓ verified Nov 1, 2026

VirusTotal Public API v3

VirusTotal Public API v3 returns JSON reports for files by hash, URLs, domains and IP addresses, including multi-engine analysis statistics, reputation, categories, timestamps, DNS or network context and relationships available to the public tier. A free VirusTotal Community account and API key are required; this entry excludes all sample-download endpoints.

Coverage

Coverage is contribution-driven rather than geographically complete, and reports reflect items submitted to or queried through VirusTotal plus participating security products. The Public API permits 4 requests per minute and 500 per day; advanced search, richer context, behavioural data and other features require paid Premium access.

Verdict

This is defensive reputation and enrichment data for checking whether security engines and community signals associate an observable with malicious activity. Results are not a verdict of fact: engine coverage, labels and analysis times differ, and reports can change when an item is rescanned. The public tier is unsuitable for commercial enrichment workflows and must not be used in business workflows that do not contribute new files. Do not visit or fetch URLs or hosts returned by the API, and do not use sample-download endpoints.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load a VirusTotal IP report into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/virustotal-api-v3.md)Also in our MCP server: call get_ingestion_skill with {"slug": "virustotal-api-v3"}.

Access

  • Create a free VirusTotal Community account and store its API key in VIRUSTOTAL_API_KEY.
  • This example requests metadata for a well-known public resolver and does not upload or download any file.

Request

bash
curl -H "x-apikey: $VIRUSTOTAL_API_KEY" 'https://www.virustotal.com/api/v3/ip_addresses/1.1.1.1'

Format

JSON:API object with an IP identifier and nested attributes such as analysis statistics, reputation, regional registry, ASN, country, network and analysis timestamps.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""VirusTotal public IP report -> pandas -> Parquet. Requires VIRUSTOTAL_API_KEY."""
import os
import requests
import pandas as pd

URL = "https://www.virustotal.com/api/v3/ip_addresses/1.1.1.1"
headers = {"x-apikey": os.environ["VIRUSTOTAL_API_KEY"]}
r = requests.get(URL, headers=headers, timeout=30)
r.raise_for_status()
obj = r.json()["data"]
row = {"id": obj["id"], "type": obj["type"], **obj.get("attributes", {})}
df = pd.json_normalize([row], sep=".")
df.to_parquet("virustotal_ip_1_1_1_1.parquet", index=False)
print(len(df), "IP report", df.loc[0, "id"], "columns", len(df.columns))

Not run: it needs a free API key.

Limits

  • Public API limit: 4 requests per minute and 500 requests per day.
  • Public API use is non-commercial or academic and has no SLA.
  • Advanced search, sandbox data and additional context require Premium access.

Quirks

  • Any IOC submitted or queried may be scanned and added to the community dataset; never send confidential, sensitive or personally identifiable indicators.
  • Analysis counters aggregate engines that can disagree or update at different times; preserve the last_analysis_date where available.
  • This workflow deliberately avoids every file-content and sample-download endpoint.

Terms and attribution

  • The Public API must not be used in commercial products or services.
  • The Public API must not be used in business workflows that do not contribute new files.
  • Do not register multiple accounts to evade quotas.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer