Help

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

Topic Labels: API
Solved
Jump to Solution
4507 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!