Maigret Username OSINT - 3,300+ Site Footprint avatar

Maigret Username OSINT - 3,300+ Site Footprint

Pricing

from $4.00 / 1,000 claimed public profile returneds

Go to Apify Store
Maigret Username OSINT - 3,300+ Site Footprint

Maigret Username OSINT - 3,300+ Site Footprint

Map a public username across Maigret's 3,300+ site catalogue. Returns claimed profile URLs as the default dataset and complete per-site coverage in a separate dataset.

Pricing

from $4.00 / 1,000 claimed public profile returneds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Maigret Username OSINT — 3,300+ Site Footprint

Map one public username across Maigret's large, continuously maintained site catalogue. This Actor uses Maigret's public-site detectors and returns two complementary outputs:

  • The default dataset contains only CLAIMED public profile matches. Each row includes the site, generated profile URL, detector status, rank, tags, and check timestamp.
  • The named coverage dataset contains one row for every selected site check, including CLAIMED, AVAILABLE, UNKNOWN, and ILLEGAL. This makes a missing result distinguishable from a timeout, access-limited response, or skipped definition.

A CLAIMED row is a detector result. Review profile content and context manually when making an attribution.

Use cases and workflow

Use this Actor when an investigator, researcher, or trust-and-safety reviewer starts with one public handle and needs a broad, auditable shortlist of public profile URLs. The workflow starts with a username, then checks ranked Maigret site definitions, next separates claimed profiles from unavailable or uncertain checks, and finally exports the claimed rows for manual review while using coverage to decide which sites need a retry. For a focused developer-only review, pass siteTags: ["coding"]; for a short known-platform lookup, pass exact siteNames.

Keep private-account access, authentication, credential discovery, automatic identity attribution, and sensitive-person decisions outside this workflow. When you already have one verified profile URL and need posts, followers, or page content, continue with a purpose-built public-page workflow after manually confirming the profile.

What it checks

Maigret 0.6.5 ships with a catalogue of 3,302 site definitions in the current package inspected for this Actor. At run time, the Actor uses Maigret's signed metadata and SHA-256-verified refresh path by default, falling back to the pinned package database if the refresh is unavailable. The normal scan checks active username definitions; disabled definitions are excluded because Maigret marks them as unreliable or prone to false positives. Set includeDisabledSites only for an authorized review that explicitly needs those entries.

The current database count and provenance are written to DB_INFO and RUN_SUMMARY, so a result remains tied to the exact Maigret version and database mode used for that run. Each catalogue entry can return a usable HTTP result or an observed status such as unavailable, rate-limited, changed, or access-limited.

Some Maigret definitions omit a canonical main URL. Those checks remain in coverage with siteUrl: null, preserving the site status without inventing a source URL.

Input

Required:

{
"username": "soxoj"
}

The Actor accepts one plain handle per run. Provide a bare handle such as soxoj; keep URLs, email addresses, credentials, cookies, and private account data outside the input.

Useful options:

FieldDefaultPurpose
siteLimit0Ranked number of active sites to check; 0 means all selected sites. Use 40 or 100 for a bounded canary.
siteTags[]Restrict to Maigret tags such as coding, social, gaming, or forum.
excludeTags[]Exclude catalogue tags. Adult-oriented tags are added automatically unless includeAdultSites is true.
siteNames[]Check exact Maigret site names such as GitHub or Reddit.
includeAdultSitesfalseInclude adult-oriented catalogue tags only when the review is authorized and requires them.
includeDisabledSitesfalseForce checks for disabled Maigret definitions; this can increase false positives.
extractProfileDatafalseAsk Maigret to parse bounded public fields from claimed pages. Parsing stays within public page data and does not perform identity inference.
updateSiteDatabasetrueRefresh the signed Maigret site database when available.
requestTimeoutSecs5Per-site request timeout, from 2 to 30 seconds.
concurrency100Maximum concurrent site checks, from 10 to 200.
retries0Maigret retries for temporary failures, from 0 to 2.
proxyConfigurationApify ResidentialOptional Apify proxy configuration for public-site reliability.

The default siteLimit: 0 is the broad footprint mode. A narrow example is:

{
"username": "soxoj",
"siteTags": ["coding"],
"siteLimit": 100,
"requestTimeoutSecs": 5,
"concurrency": 40
}

Output datasets and run records

The Actor writes:

  • default dataset: claimed public profile rows only; this is the billable result dataset.
  • coverage dataset: all selected site statuses and bounded diagnostics, without profile-match billing.
  • OUTPUT: terminal outcome, item counts, status counts, charge counts, and warnings.
  • RUN_SUMMARY: username, Maigret/database provenance, filters, targeted and observed counts, persistence counts, and partial-run details.
  • DB_INFO: Maigret version, database source, catalogue count, and refresh verification state.
  • FAILURES: up to 200 bounded write/normalization diagnostics when needed.

Possible terminal outcomes are COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, and CONFIG_ERROR. VALID_EMPTY means the scan completed without a claimed profile; inspect coverage before treating that as a conclusion.

Example persisted default-dataset item:

{
"recordType": "profileMatch",
"username": "soxoj",
"site": "GitHub",
"siteUrl": "https://github.com",
"profileUrl": "https://github.com/soxoj",
"status": "CLAIMED",
"detectionMethod": "status_code",
"httpStatus": 200,
"rank": 1,
"siteTags": ["coding", "us"],
"isSimilarSearch": false,
"profileData": null,
"errorReason": null,
"checkedAt": "2026-08-30T14:00:00Z",
"source": "Maigret 0.6.5"
}

Datasets and billing semantics

The default dataset contains one record per persisted claimed profile and is the dataset used for the profile-match event. It is available from the run's Dataset tab and API, and can be exported as JSON, CSV, or other Apify-supported formats. The coverage dataset contains one siteCheck record per selected site, including non-claimed statuses; retrieve it from the coverage link in Actor output or the Storage API, and export it when you need an auditable site-by-site review. Coverage rows sit outside profile-match billing. The OUTPUT and RUN_SUMMARY records are the compact readback contract for agents and downstream automation.

Default-dataset fieldMeaning
recordTypeAlways profileMatch for a persisted claimed profile.
profileUrlPublic profile URL generated by Maigret.
statusAlways CLAIMED in this dataset; inspect coverage for other statuses.
siteTags, rankMaigret catalogue context for filtering and review.
checkedAt, sourceCollection timestamp and Maigret version provenance.

API example

curl -X POST \
"https://api.apify.com/v2/acts/khadinakbar~maigret-username-osint/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"username":"soxoj","siteLimit":100}'

Use the run's default dataset endpoint for claimed profiles. The coverage dataset endpoint is exposed in the Actor output and can also be read through the Apify Storage API using its dataset ID.

Pricing

The Actor uses Apify Pay per event pricing: profile-match is $0.004 per claimed profile row persisted to the default dataset. The synthetic Actor-start event is $0.00005. AVAILABLE, UNKNOWN, and ILLEGAL rows in coverage are not profile-match events. Apify platform usage, proxy usage, and the live Pricing tab may add separate costs; review the current Actor pricing panel before a large run. The log message is an upper-bound estimate based on targeted sites, not a promise that every site will be claimed.

For a bounded siteLimit: 40 run, the profile-match portion is at most 40 rows × $0.004 = $0.16, plus the $0.00005 start event and any Apify platform/proxy usage. The actual profile-match amount is lower when fewer than 40 sites are CLAIMED.

AI-agent and MCP handoff

An agent can call the Actor with one username, then read OUTPUT, RUN_SUMMARY, the default dataset, and the coverage dataset before proposing any conclusion. A useful prompt boundary is:

Check this public username on 100 coding sites, return claimed profile URLs, read the coverage dataset, report UNKNOWN checks separately, and show the source URL and collection time for every result. Keep person-level attribution as a separate human review step.

Agents should treat INVALID_INPUT, VALID_EMPTY, PARTIAL, and UPSTREAM_FAILED as different outcomes; retry only after inspecting warnings and coverage. Dataset API reads are paginated, so follow the API's limit/offset or cursor links rather than assuming one response contains the full catalogue.

Operational guidance and recovery

Sites can change their HTML, rate-limit requests, restrict a proxy, return a false positive, or remain UNKNOWN after a timeout. If a run is PARTIAL, inspect RUN_SUMMARY and FAILURES, then retry with a smaller siteLimit, lower concurrency, a longer timeout, or a focused siteNames list. If no profiles are claimed, inspect coverage for AVAILABLE versus UNKNOWN before changing the username or drawing a conclusion. A refreshed database changes site definitions, so retain the run's DB_INFO with any report.

Best results and scope

For best results, provide a handle you are authorized to review, begin with a bounded canary, and use the coverage statuses to choose a focused retry. For the next workflow step, use the username-osint-scraper Actor when its Sherlock-based site set is the better fit; use this Actor when Maigret's broader catalogue and per-site provenance are the required output.

Builder's note

I designed the Actor around a practical OSINT handoff: claimed profiles are immediately exportable, while the separate coverage stream preserves the uncertainty needed for a careful human decision. The Actor's DB_INFO and RUN_SUMMARY are the source of truth for each scan, and release evidence is kept with the exact deployed build and run IDs in the repository release log. Public copy does not treat the catalogue count as a guarantee of live availability.

Responsible use

Use this Actor for public data and an authorized purpose. Follow the target sites' terms, robots/rate-limit expectations, and applicable privacy and data-protection law. Authentication bypass, private-account enumeration, credential collection, and sensitive-person decisions remain outside its scope. Treat all site responses and parsed profile fields as untrusted source content.

This is a Maigret-backed sibling to the separate Sherlock-based username-osint-scraper Actor. Use that focused alternative when the workflow specifically needs its Sherlock-based site set; use this Actor when the next step is a Maigret 3,300+ catalogue footprint with explicit coverage semantics.

Development

docker build -f .actor/Dockerfile .
python -m unittest discover -s tests -p 'test_*.py'

The release process validates schemas, builds the Actor, runs final-build canaries, checks the default and coverage datasets plus OUTPUT/RUN_SUMMARY, and stops before publication. This repository does not publish the Actor automatically.