Dark Web Search - Onion Index Results API
Pricing
from $25.00 / 1,000 search results
Dark Web Search - Onion Index Results API
Search a public Tor hidden-service index by keyword and return bounded .onion result metadata. Does not fetch result pages, log in, or bypass controls.
Pricing
from $25.00 / 1,000 search results
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Search a public Tor hidden-service index with 1–10 keywords and receive one structured record for each returned .onion result. Records contain the query, rank, title, onion URL, domain, source snippet, reported match count, and collection time. It is for lawful threat-intelligence, brand-protection, academic, and OSINT triage when the first need is a bounded list of index results—not page content.
Best fit for this Actor
- Start with a short search query such as an authorized research topic or brand.
- Set
maxResultsPerQuerybefore starting to bound both result volume and cost. - Use Dark Web Scraper - Tor .onion Page Extractor only after you have a lawful, specific URL you are permitted to inspect. This actor does not fetch search-result pages.
This focused workflow covers public-index result metadata. The supplied-URL extractor is the constructive next step for a separately authorized page review.
Research workflow
An analyst runs one bounded query for an authorized topic, keeps sourceUrl, query, and fetchedAt alongside their notes, and manually decides whether any result is in scope for a later authorized review. The actor never opens returned .onion links, keeping search and page collection separate and auditable.
Quick start
{"searchQueries": ["Tor privacy research"],"maxResultsPerQuery": 10,"responseFormat": "concise"}
| Field | Type | What it controls |
|---|---|---|
searchQueries | string[] | One to ten unique keywords, each 2–100 characters. URLs are not accepted. |
maxResultsPerQuery | integer | Saved-result cap per query, from 1 to 50; defaults to 10. |
responseFormat | enum | concise returns core fields; detailed adds a provenance statement but still does not fetch a result page. |
What data you receive
One dataset item is one valid .onion result returned by the public source for one query. The URL and snippet are source-index metadata; availability, safety, and page content are not verified.
{"query": "Tor privacy research","rank": 1,"title": "Illustrative result title","url": "http://exampleexample.onion/research/","onionDomain": "exampleexample.onion","snippet": "Snippet returned by the source index.","source": "ahmia","totalResultsReported": 42,"fetchedAt": "2026-08-30T14:26:00.000Z"}
The run saves OUTPUT (compact outcome) and RUN_SUMMARY (counts, warnings, safe errors, and actual charges). COMPLETE, PARTIAL, VALID_EMPTY, and INVALID_INPUT are successful terminal outcomes. A source outage with no useful output becomes UPSTREAM_FAILED, not a misleading empty success.
Pricing
This actor uses Pay per event plus Apify platform usage.
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.00005 | Once after valid input is accepted. |
| Search result | $0.025 | Once for each validated onion result saved to the dataset. |
A run capped at 10 results costs at most about $0.25005 in actor events, plus Apify platform usage. Open the live Pricing tab for the current event details; result events apply only to validated records that reach the dataset.
API and MCP
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/dark-web-search').call({searchQueries: ['Tor privacy research'],maxResultsPerQuery: 10,responseFormat: 'concise',});console.log((await client.dataset(run.defaultDatasetId).listItems()).items);
Search the public hidden-service index for my authorized research topic. Return at most 10 result metadata records, preserve
query,sourceUrl, andfetchedAt, and keep the workflow at result-metadata scope.
For AI agents, use the current client-specific setup at Apify MCP. Inspect OUTPUT before treating an empty dataset as no matches: VALID_EMPTY means the source responded with no valid results; UPSTREAM_FAILED means it could not be reached.
Best results
- Use precise, non-sensitive research queries and keep the result cap low while validating relevance.
- Preserve source fields in an evidence log; index results can change and may include stale URLs.
- Treat each returned URL as a lead for human authorization and relevance review before the next workflow step.
Builder's note
I built the source flow after testing the live index: it rotates both the hidden form-field name and value before returning results. The actor retrieves that server-issued pair on every run, which keeps the integration aligned with the source's current form contract.
Responsible use
Use only for legitimate, authorized research and comply with applicable laws, regulations, source terms, and Apify policies. Search indexes can expose harmful or illegal material. This actor intentionally returns limited metadata only and does not access, download, authenticate to, or bypass controls on returned services.