Help

The Community will be temporarily unavailable starting on Friday February 28. We’ll be back as soon as we can! To learn more, check out our Announcements blog post.

How to get more than 100 rows using Airtable API in Python using offest?

Topic Labels: API
Solved
Jump to Solution
4828 2
cancel
Showing results for 
Search instead for 
Did you mean: 
Krishangi_Goswa
5 - Automation Enthusiast
5 - Automation Enthusiast

Hello.
I am really new to the Airtable API and for some reason connecting the API this way did not work-

    at = airtable.Airtable('Base_Key', 'Airtable_Key')

But I got it working this way -

get_url = ‘https://api.airtable.com/v0/BASE_ID/TABLE_NAME’
get_headers = {
‘Authorization’: ‘Bearer API_KEY’ }

Response = requests.get(get_url, headers=get_headers)
Response_Table = Response.json()

However, this fetches only the first 100 records and am reading about offset and pagination but I am unable to figure how to incorporate it into this code.

Thank you for the time!

1 Solution

Accepted Solutions

After a lot of issues, I found this solution.
Posting it for anyone else facing the same problem.

global offset
offset = '0'
result = []

while True :
    url = "https://api.airtable.com/v0/BASE_ID/TABLE_NAME"
    querystring = {
        "view":"Published View",
        "api_key":"YOUR_KEY",
        "offset": offset}

    try :
        response= requests.get(url, params=querystring)
        response_Table = response.json()
        records = list(response_Table['records'])
        result.append(records)
        #print(records[0]['id'] , len(records))
    
        try : 
            offset = response_Table['offset']
            #print(offset)
            
        except Exception as ex:
            #print(ex , offset)
            break
    
    except error as e:
        print(e)

Thank you!

See Solution in Thread

2 Replies 2
Krishangi_Goswa
5 - Automation Enthusiast
5 - Automation Enthusiast

Update :
I am trying this way -

get_url = 'https://api.airtable.com/v0/appXXXXXXXXXX/TABLE_NAME'
get_headers = {
    'Authorization': 'Bearer keyXXXXXXXXX' ,
    'Offset' : 'itrXXXXXXX/recXXXXXXX'
}

try :
    Response= requests.get(get_url, headers=get_headers})
    Response_Table = Response.json()
    #print(Response_Table)
    
except error as e:
    print(e)

And I get the error :

{'error': {'type': 'INVALID_OFFSET_VALUE', 'message': 'The value of offset ‘itrXXXXXX/recXXXXXX’ is invalid'}}

I would appreciate any leads. Thank you!

After a lot of issues, I found this solution.
Posting it for anyone else facing the same problem.

global offset
offset = '0'
result = []

while True :
    url = "https://api.airtable.com/v0/BASE_ID/TABLE_NAME"
    querystring = {
        "view":"Published View",
        "api_key":"YOUR_KEY",
        "offset": offset}

    try :
        response= requests.get(url, params=querystring)
        response_Table = response.json()
        records = list(response_Table['records'])
        result.append(records)
        #print(records[0]['id'] , len(records))
    
        try : 
            offset = response_Table['offset']
            #print(offset)
            
        except Exception as ex:
            #print(ex , offset)
            break
    
    except error as e:
        print(e)

Thank you!