apoc.load.arrow.stream

In APOC 2025.06 this procedure was migrated to the unsupported APOC Extended library. This means that if you are using APOC 2025.06 or later, the procedure is not available in Cypher 25 but can still be used with Cypher 5. For more information, see APOC and Cypher versions.

Security: Protecting against SSRF

This procedure can fetch data from external URLs and is susceptible to Server-Side Request Forgery (SSRF). To mitigate this:

  • Neo4j Enterprise Edition: Use Load Privileges with CIDR restrictions. Note: For admin users, you must also apply DENY EXECUTE BOOSTED PROCEDURE apoc.* ON DBMS TO PUBLIC to prevent boosted privileges from bypassing these restrictions.

  • Neo4j Community Edition: Configure the internal.dbms.cypher_ip_blocklist setting.

For detailed mitigation strategies, including examples on how to configure the internal.dbms.cypher_ip_blocklist setting, see the Knowledge Base article: Protecting against SSRF.

Details

Syntax

apoc.load.arrow.stream(source [, config ]) :: (value)

Description

Imports NODE and RELATIONSHIP values from the provided arrow byte array.

Input arguments

Name

Type

Description

source

BYTEARRAY

The data to load.

config

MAP

This value is never used. The default is: {}.

Return arguments

Name

Type

Description

value

MAP

A map of data loaded from the given file.

Usage Examples

Given an Arrow byte[] contains people and their properties:

test.arrow
name,age,beverage
Selma,9,Soda
Rana,12,Tea,Milk
Selina,19,Cola

We’ll provide a full roundtrip example where we use the apoc.export.arrow.stream.all in order to generate the arrow byte[]

CALL apoc.export.arrow.stream.all() YIELD value AS byteArray
CALL apoc.load.arrow.stream(byteArray) YIELD value
RETURN value
Results
value

{name: "Selma", age: "9", beverage: "Soda"}

{name: "Rana", age: "12", beverage: "Tea;Milk"}

{name: "Selina", age: "19", beverage: "Cola"}