How to search for specific value through API filterByFormula?


#1

My “Published URL” column contains URLs of web pages.

Through API, I would like to be able to pull only the record containing a URL I supply in the call.

I am already successfully making a curl call with this…

  $base = 'appPtTr2kigmLlCP8';
  $table = 'Content';
  $view = urlencode('Published (Robert)');

  // $fields = urlencode('Published URL'); // Only return these fields, cf. https://community.airtable.com/t/using-fields-filter-in-list-of-records/940
  if (!empty($offset)) {
    $q_offset = '&offset='.$offset;
  }
  $airtable_url = 'https://api.airtable.com/v0/' . $base . '/' . $table;

  // construct the url query
  $url = 'https://api.airtable.com/v0/' . $base . '/' . $table . '?maxRecords=5&pagesize=1000&view='.$view . $q_offset;

But how can I make use of the relevant feature (is it filterByFormula?) to add

Elsewhere on the forum, I have seen reference like…

filterByFormula=SEARCH(‘riva’%2C+%7BLast+Name%7D)

But I have not crystallised how I would perform a query for the record with a specific “Published URL” value.

How do I do this, and what do I need to know about encoding a URL and the whole query parameter pair?

Thanks.


#2

filterByFormula allows you to apply an Airtable formula to limit the records that are returned. If I understand your question correctly, rather than trying to fetch a record by its Airtable record ID, you want to fetch it based on a different field value.

You can do this by doing filterByFormula={Field Name}="value". When your field names have a space in them, you have to wrap the name in curly brackets (you can also do this for field names that don’t have a space character, but it is not required). You should be aware that making a GET call with filterByFormula will always return a list of records, even if that list only has one value in it.

You can use this Airtable API Encoder to check how you should encode your data.