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.
This integration is ideal for data engineers who need to enrich large datasets with web intelligence directly in their Snowflake pipelines—without leaving SQL or building custom API integrations. Parallel provides a SQL-native User Defined Table Function (UDTF) for Snowflake that enables data enrichment directly in your SQL queries. The integration uses Snowflake’s External Access feature to securely connect to the Parallel API, and batches all rows in a partition into a single API call for efficient processing.
View the complete demo notebook:

Features

  • SQL-Native: Use parallel_enrich() directly in Snowflake SQL queries
  • Batched Processing: All rows in a partition are sent in a single API call using end_partition()
  • Secure: API key stored as Snowflake Secret, accessed via External Access Integration
  • Configurable Processors: Choose from lite-fast to pro for speed vs thoroughness tradeoffs
  • Structured Output: Returns VARIANT columns for input and enriched data

Installation

The standalone parallel-cli binary does not include deployment commands. You must install via pip with the [snowflake] extra to deploy the Snowflake integration.

Deployment

The Snowflake integration requires a one-time deployment step to set up the External Access Integration, secrets, and UDTF in your Snowflake account.

Prerequisites

  1. Snowflake Account - Paid account required (trial accounts don’t support External Access)
  2. ACCOUNTADMIN Role - Required for creating External Access Integrations
  3. Parallel API Key from Parallel

Finding Your Account Identifier

Your Snowflake account identifier is in your Snowsight URL:

Deploy with CLI

If your account requires MFA:
This creates:
  • Database: PARALLEL_INTEGRATION
  • Schema: ENRICHMENT
  • Network rule for api.parallel.ai
  • Secret with your API key
  • External Access Integration
  • parallel_enrich() UDTF (batched table function)
  • Roles: PARALLEL_DEVELOPER and PARALLEL_USER
For manual deployment options (useful if you don’t have ACCOUNTADMIN), troubleshooting, MFA setup, and cleanup instructions, see the complete Snowflake setup guide.

Basic Usage

The parallel_enrich() function is a table function (UDTF) that requires the TABLE(...) OVER (PARTITION BY ...) syntax:
Output:

Function Parameters

Return Values

The function returns a table with two VARIANT columns: The enriched column contains:
Field names are automatically converted to snake_case (e.g., “CEO name” → ceo_name).

Custom Processor

Override the default processor by adding a third parameter:

Batching with PARTITION BY

The PARTITION BY clause controls how rows are batched into API calls. All rows in the same partition are sent together in a single API request.

All Rows in One Batch

Batch by Column

Fixed Batch Sizes

Choosing a Partition Strategy

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

For smaller datasets, batch all rows together for maximum efficiency:
Be specific in your output column descriptions for better results:
Store enriched results in a table to avoid re-processing:
Process new records daily using date partitioning:

Security

The integration uses Snowflake’s security features:
  1. Network Rule: Only allows egress to api.parallel.ai:443
  2. Secret: API key stored encrypted (not visible in SQL)
  3. External Access Integration: Combines network rule and secret
  4. Roles: PARALLEL_USER for query access, PARALLEL_DEVELOPER for UDF management
Grant access to users: