TombaTomba
Start free
  • Documentation
  • API reference
  • SDKs & CLI
  • AI & MCP
  • Integrations
  • Enterprise
  • Migration guides

Find, verify and enrich B2B contacts from public sources, in the app, your spreadsheet or through the API.

GDPR & CCPA

// docs

  • API changelog
  • Support options
  • Security

// platform

  • Dashboard
  • Pricing
  • API status

// resources

  • Help center
  • Product updates
  • TombaBot crawler

// company

  • Website
  • Contact us
  • Edit or remove your data

© 2021–2026 Tomba.io

  • Terms of service
  • Privacy policy
  • Cookie policy
  • Security policy
  • GDPR
  • CCPA
Overview
Salesforce (coming soon)
Snowflake (coming soon)
    Getting Started
    Guides
      The Streamlit appEnrich a tableBackground runsResume and auto-resumeSchedulesCache and budgetsResults and historyPricing and limitsPrivacy and securityTroubleshootingFAQ
    Tutorials
    Reference
Guides

Background runs

A table of 100,000 rows takes about an hour. Instead of waiting on the CALL, run it in the background: the app queues the run, returns at once, and does the work in its own serverless task.

Start a background run

run_tool_async takes the same arguments as run_tool:

Code
CALL TOMBA.core.run_tool_async('email_finder', 'CRM.PUBLIC.LEADS', {'domain': 'COMPANY_DOMAIN', 'first_name': 'FIRST_NAME', 'last_name': 'LAST_NAME'}, 'LEADS_FOUND', 500000, {'max_credits': 20000});

It returns {run_id, status: 'QUEUED', output_table}. Company searches have the same form: search_companies_async(filters, output_table, max_results).

In the Streamlit app, Run in the background on the Enrich a table page (and on Find companies) does the same, and takes you to History.

Follow progress

Code
SELECT run_id, tool, status, progress_pct, rows_total, rows_expected, charged_usd, message FROM TOMBA.core.runs WHERE status IN ('QUEUED', 'RUNNING') ORDER BY started_at DESC;

progress_pct is the share of rows done. The History page shows the same as progress bars.

Cancel

Code
CALL TOMBA.core.cancel_run('<run_id>');

A running run stops after its current chunk of up to chunk_size rows (default 1,000; see Settings); a queued run never starts. Rows already done are kept, and you can resume the run later.

Good to know

  • Background runs need the app's EXECUTE TASK and EXECUTE MANAGED TASK privileges (see Installation). Without them, the call explains what to approve; regular runs still work.
  • The serverless task uses Snowflake compute, billed to your account like any serverless task. Lookups wait on the network, so it stays small.
  • Runs are processed one at a time, oldest first.
Last modified on September 29, 2026
Enrich a tableResume and auto-resume
On this page
  • Start a background run
  • Follow progress
  • Cancel
  • Good to know