Search code examples
apipaginationpython-requestsairtable

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


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!


Solution

  • 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)