---
title: URL table function
meta:
    description: Documentation for the Tinybird URL table function
---

# URL table function {% pill text="BETA" type="easy" /%}

{% callout type="caution" %}
The Tinybird `url()` table function is currently in private beta. If you're interested in early access, reach out to support.
{% /callout %}

The Tinybird `url()` table function allows you to read data from an existing URL into Tinybird, then schedule a regular copy pipe to orchestrate synchronization. You can load full tables, and every run performs a full replace on the data source.

To use it, define a node using standard SQL and the `url` function keyword, then publish the node as a copy pipe that does a sync on every run. See [Table functions](../table-functions) for general information and tips.

## Syntax

Create a new pipe node. Call the `url` table function and pass the URL. Optionally, pass the format and the structure:

```sql {% title="Example query logic" %}
SELECT
    JSONExtractString(data, 'article') AS article,
    JSONExtractInt(data, 'views') AS views,
    JSONExtractInt(data, 'rank') AS rank
FROM
    (
        SELECT toJSONString(arrayJoin(items.articles)) AS data
        FROM
            url(
                'https://wikimedia.org/api/rest_v1/metrics/pageviews/top/en.wikipedia.org/all-access/2024/03/all-days',
                'JSONColumns',
                'items Tuple(access Nullable(String), articles Array(Tuple(article Nullable(String), rank Nullable(Int64), views Nullable(Int64))), day Nullable(String), month Nullable(String), project Nullable(String), year Nullable(String))'
            )
    )
```

Publish this node as a copy pipe. You can choose to append only new data or replace all data.

## See also

- [Table functions](../table-functions)
{% - [Copy pipes](/forward/work-with-data/optimize/copy-pipes) /%}