Skip to main content
For AI agents: a documentation index is available at https://docs.parallel.ai/llms.txt. The full text of all docs is at https://docs.parallel.ai/llms-full.txt. You may also fetch any page as Markdown by appending .md to its URL or sending Accept: text/markdown.For Search and Extract, use /v1/search and /v1/extract for all new integrations and agent tool calls. Use /v1beta/search and /v1beta/extract only when maintaining an existing integration that already uses them. Do not substitute /v1 for the documented FindAll or Ingest endpoint paths.
This integration is ideal for data engineers and analysts who work with DuckDB and need to enrich data with web intelligence directly in their SQL or Python workflows. Parallel provides a native DuckDB integration with two approaches: batch processing for efficiency, and SQL UDFs for flexibility.
View the complete demo notebook:

Features

  • Batch Processing: Process all rows in parallel with a single API call (recommended)
  • SQL UDF: Use parallel_enrich() directly in SQL queries
  • Progress Callbacks: Track enrichment progress for large datasets
  • Permanent Tables: Optionally save results to a new table

Installation

Or with all dependencies:

Basic Usage - Batch Processing

Batch processing is the recommended approach for enriching multiple rows efficiently.
Output:

Function Parameters

Return Value

The function returns an EnrichmentResult dataclass:

Column Name Mapping

Output column descriptions are automatically converted to valid SQL identifiers. Field names are converted to snake_case:

SQL Query as Source

You can pass a SQL query instead of a table name:

Creating Permanent Tables

Save enriched results to a permanent table:

Progress Tracking

Track progress for large enrichment jobs:

SQL UDF Usage

For flexibility in SQL queries, you can register a parallel_enrich() function:
The SQL UDF processes rows individually. For better performance with multiple rows, use batch processing with enrich_table().

Including Citations

Processor Selection

Choose a processor based on your speed vs thoroughness requirements. See Choose a Processor for detailed guidance and Pricing for cost information.

Best Practices

Batch processing is significantly faster (4-5x or more) than the SQL UDF for multiple rows:
Be specific in your output column descriptions for better results:
Errors don’t stop processing - partial results are returned:
  • Use lite-fast for high-volume, basic enrichments
  • Test with small batches before processing large tables
  • Store results in permanent tables to avoid re-enriching