We made a service that lets you query Airtable with SQL

Hey everyone,

Excited to share a new tool we just built for Airtable - Sync Inc (syncinc.so). With a couple clicks, we’ll setup a hosted Postgres database containing all your Airtable data. We keep your database in sync in real-time. All you have to do is connect to it with your favorite SQL client, programming language, or app.

We used Airtable to power a volunteer organization we helped start at the beginning of this year. We loved how quick Airtable was to get up and running. But while we liked all the cool features for our volunteers, we missed the power of SQL on the back-end. And when we wanted to extend our base by building external apps on top of it, we ran into limitations with Airtable’s API (hello, filterBy). While Airtable looks like a database, you can’t query it like one.

With Sync Inc, you get the best of both worlds. You can keep using Airtable exactly as you do now. But unlock the flexibility of a SQL database behind the scenes.

You can try it out totally free here: https://syncinc.so.

If you’re curious about how it all works, check out our docs: https://docs.syncinc.so/

We’re looking forward to hearing feedback and answering any questions!


I’ve been wanting to query Airtable with SQL. We would use JOIN and UNION all the time when we used Microsoft Access. So this looks helpful!

But I’m curious how lookups will work here?

For example, if I have a record that is linked to two or more records on another table via a lookup - how will this work with Sync Inc?

1 Like

Hey @kaykydebrito,

Happy to hear this looks useful :slight_smile:

Let’s say you have a table named orders with a lookup field containing the products in the order. Your Sync Inc database will also have a table called orders with a column, products . products will be a text[] type in Postgres - a Postgres array of record IDs.

In your Sync Inc Postgres database, it will look like this:

{rec8Uizjiakjx, rec98akjdiZUZj}

That’s just what text arrays look like in Postgres. In JSON, this would be: [ "rec8Uizjiakjx", "rec98akjdiZUZj"]

So, to find all orders containing a particular product, you would do this:

SELECT * FROM orders WHERE 'rec98akjdiZUZj' = ANY(product);

Or to get the first product in every order you could do something like this:

SELECT product[1] FROM purchase_orders;

We have a complete example in our our docs that you can use to get going quickly:

I am here so let me know if you need anything!

1 Like

I connected my Airtable base to Google Data Studio using the standard Postgres connector to run some analytics for a project. The arrays aren’t causing any issues. It’s working great.

I have a small base right now, so it seems to be syncing instantly. I’m thinking about using this for some bigger projects. How real-time is this for bigger bases?

Hey @kaykydebrito great to hear it!

We have a dedicated process that works to keep your base in sync constantly. For bases under 1,000 rows, your follower database will never be more than a few seconds behind.

The largest bases can lag by about 2-3 minutes, but we’re working right now on some innovative solutions to bring this down to real-time (under a couple seconds). Should be live in a few weeks. Sign-up now and we’ll keep you posted :slight_smile:

– Anthony @ Sync Inc