Temp Email | Disposable Inbox, OTP & Verification Catcher avatar

Temp Email | Disposable Inbox, OTP & Verification Catcher

Pricing

from $10.00 / 1,000 message receiveds

Go to Apify Store
Temp Email | Disposable Inbox, OTP & Verification Catcher

Temp Email | Disposable Inbox, OTP & Verification Catcher

Create a disposable email inbox and read incoming messages on demand: OTP codes, sign-up confirmations and verification links. Wait for a specific email, auto-extract codes and magic-link tokens, read attachments and headers. Keyless, no signup. For QA, automation and signup testing.

Pricing

from $10.00 / 1,000 message receiveds

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

📧 Temp Email — Disposable Inbox, OTP & Verification Catcher

Temp Email — disposable inbox, OTP & verification-code catcher

Spin up a disposable email inbox in seconds and read its incoming messages — one-time codes (OTP), sign-up confirmations and verification links — on demand. Perfect for QA, test automation, sign-up flows, scraping pipelines and bots that need a throwaway mailbox.

No API key, no registration. Create an inbox instantly, then read it on demand with built-in OTP/verification-code extraction.


🤖 For AI agents — MCP & Standby (on-demand inbox)

Run this Actor in Standby mode and it exposes a warm HTTP + MCP endpoint, so an AI agent can grab a throwaway inbox and catch the sign-up OTP within a single session — no cold start per call.

  • MCP tools: create_inbox (→ address + key) and read_inbox (→ messages + extracted firstCode / OTP, with optional waitTimeout).
  • Plain REST (same endpoint):
    • GET /?action=create&domain=auto{ address, key }
    • GET /?action=read&address=<addr>&key=<key>&waitTimeout=30&matchSubject=code → messages + firstCode

Typical agent flow: create_inbox → sign up with the address → read_inbox(waitTimeout=30) → read firstCode. Turn on Standby in the Actor's settings to get your endpoint URL.


📮 Available domains

Just pick a domain from the dropdown when you create the address:

  • Auto — the fastest, most reliable random address (recommended).
  • Branded custom domains: @swagpapa.com · @rulersonline.com · @besttempmail.com · @deepmails.org · @embassybase.com · @justdefinition.com · @gongjua.com · @123mails.org
  • Gmail aliases: dot trick (a.b.c@gmail.com), plus trick (abc+tag@gmail.com), Googlemail (a.bc@googlemail.com).

Reading: Auto inboxes are read with their key (token). Branded and Gmail inboxes can be read with just the address — leave the key empty.


✨ Highlights

  • 📨 Create a throwaway inbox instantly — pick any domain, get the address + credentials in ~1 second.
  • 📥 Read on demand — when you expect a message, run read on the inbox; it polls until the mail lands (great for catching a verification email after a sign-up).
  • 🔑 OTP & link extraction — pulls likely one-time codes and verification/confirmation links out of the message body.
  • 🎯 Wait for the right email — filter by sender, subject or keyword and keep polling until the email you actually want arrives (ignore inbox noise and old mail).
  • 📎 Attachments — see attachment metadata (filename, type, size, download URL) on each message.
  • 📦 Bulk create — spin up many inboxes in a single run for load and parallel QA testing.
  • 🛡️ Reliable by default — create retries automatically and falls back to the fast Auto pool if a branded inbox is unavailable.
  • 🏷️ Branded domains & Gmail aliases — varied addresses, or a fast random one.
  • 🔑 Read by address — branded/Gmail inboxes open with just the email (no key to keep).
  • 🔁 Re-readable — the create result carries the inbox credentials so you can read the same inbox any time.
  • 🆓 Keyless — no key, no signup, no proxy.

🧠 How it works

Two simple, separate steps:

ActionWhat it does
create (default)Makes a new inbox and returns its address + credentials instantly (~1s). No waiting.
readChecks an existing inbox for messages. Pass the address + credentials from a create run; it polls up to waitTimeout for new mail.

Typical automation flow:

  1. Run create → get the address (+ token/password or code).
  2. Use the address to sign up somewhere / trigger a mail.
  3. Run read with that address + credentials → get the message and the extracted firstCode.

📥 Input

FieldTypeDefaultDescription
domainstringautoPick the address domain: auto, a branded domain, or a Gmail alias.
actionstringcreatecreate (new inbox, instant) or read (check an existing inbox).
usernamestringLocal part for the Auto domain (random if empty).
countinteger1create only: number of inboxes to create in one run (1-25).
allowFallbackbooleantruecreate only: fall back to a reliable Auto inbox if a branded/Gmail inbox fails.
addressstringInbox address (for action=read).
inboxesarrayread only: check several inboxes in one run, e.g. [{"address":"a@x.com","key":"..."}].
token / passwordstringCredentials for an Auto inbox (for read).
codestringCredential for a branded/Gmail inbox (for read).
waitTimeoutinteger0read only: 0 = check once and return instantly (fast). Set >0 to wait for mail.
pollIntervalinteger6read only: seconds between inbox checks.
matchFromstringread only: keep waiting until an email from a sender containing this text arrives.
matchSubjectstringread only: only return emails whose subject contains this text.
matchKeywordstringread only: only return emails containing this text anywhere (subject/body).
onlyUnseenbooleanfalseread only: skip messages already marked as seen.
waitForNewbooleanfalseread only: ignore mail already in the inbox when the run starts.
latestOnlybooleanfalseread only: return just the newest matching message.
maxMessagesinteger0read only: cap how many matching emails to return (0 = no limit).
extractCodesbooleantrueExtract OTP codes and verification links.
includeBodybooleantrueInclude full text/HTML body per message.
codeMinLength / codeMaxLengthinteger4 / 8Length range for OTP code detection.
codeRegexstringAdvanced: custom regex to extract the code yourself.
includeRawbooleanfalseAlso return raw EML + parsed headers and SPF/DKIM/DMARC (Auto inboxes only).

Example: create an inbox (instant)

{
"action": "create",
"domain": "auto"
}

Example: create several inboxes at once

{
"action": "create",
"domain": "auto",
"count": 10
}

Example: branded address, then read it later

{ "action": "create", "domain": "swagpapa.com" }
{ "action": "read", "address": "abc@swagpapa.com" }

Add "waitTimeout": 60 to a read if you want it to keep waiting for an incoming mail instead of returning instantly.

Example: wait for the verification email from a specific sender

{
"action": "read",
"address": "abc@swagpapa.com",
"matchFrom": "no-reply@service.com",
"waitForNew": true,
"latestOnly": true,
"waitTimeout": 90
}

This keeps polling (ignoring anything already in the inbox) until a fresh email from service.com lands, then returns just that one message with its extracted firstCode.

Example: check several inboxes at once

{
"action": "read",
"inboxes": [
{ "address": "a@swagpapa.com" },
{ "address": "u4f9k2@example.net", "key": "eyJ0eXAiOiJKV1Q..." }
]
}

Takes one snapshot per inbox. Branded/Gmail addresses open with just the address; Auto addresses need their key (token).


📤 Output

create → one item with the new inbox address and its credentials:

{
"success": true,
"address": "u4f9k2@example-domain.com",
"token": "eyJ0eXAiOiJKV1Q...",
"password": "…",
"messageCount": 0
}

readone dataset item per email (so a 3-message inbox = 3 results). Each item is a full message:

{
"success": true,
"address": "u4f9k2@example-domain.com",
"messageIndex": 1,
"messageCount": 2,
"id": "…",
"from": "no-reply@service.com",
"fromName": "Service",
"subject": "Your verification code",
"text": "…",
"html": "…",
"otpCodes": ["424864"],
"verificationLinks": ["https://service.com/verify?token=…"],
"firstCode": "424864",
"token": "eyJ0eXAiOiJKV1Q..."
}

If the inbox is empty, read returns a single summary item with messageCount: 0 and the inbox credentials so you can read again later.

FieldDescription
addressThe disposable inbox address.
token / password or codeCredentials to re-read this inbox later.
messageIndex / messageCountPosition of this email and the total found this read.
from / fromName / subjectSender and subject of the email.
text / htmlFull message body.
otpCodes[] / verificationLinks[]Extracted one-time codes and verification links.
verificationTokens[]Token-like values pulled from verification link query params (e.g. magic-link / passwordless tokens).
firstCodeThe first extracted OTP code of this message (handy shortcut).
hasAttachments / attachments[]Whether the email has attachments, and their metadata (filename, contentType, size, downloadUrl).
raw / headers / authResultsRaw EML source, parsed headers and the Authentication-Results line (when includeRaw is on, Auto inboxes).
spf / dkim / dmarcAuthentication verdicts when the receiving server provides them (pass / fail); dkim shows signed when a DKIM signature is present.

💡 Use cases

  • Automated sign-up / account testing — catch the confirmation email and code.
  • QA & end-to-end tests — verify your product's transactional emails.
  • Scraping & bots — register throwaway accounts that need email verification.
  • OTP capture — pull the one-time code straight into your workflow.

⚙️ Notes & limits

  • Billed per inbox created and per message retrievedcreate = one charge for the new inbox; read = one charge per email delivered. An instant check (waitTimeout 0) that finds nothing is free. If you ask the Actor to wait for mail (waitTimeout > 0) and it actually has to poll, a single small watch charge applies for that run — so a fast lookup stays cheap while waiting is priced separately.
  • create is instant; read checks once by default (waitTimeout 0) — set waitTimeout to keep waiting for mail to arrive.
  • Disposable inboxes are short-lived by nature; read them promptly.
  • Branded inboxes are rate-limited, so read uses a safe minimum poll interval automatically.

Built and maintained by Apivault — reliable data Actors, fair pricing.