← Al Davies, 250 High Street

Power Automate Get items filter query returns nothing: how to fix it

Short answer: a Get items Filter Query fails quietly when it uses a column's display name instead of its internal name, so use the internal name (each space becomes _x0020_), match the value exactly, put quotes around text only, and use ne for not equal. Check those four things in order: the internal column name, the exact value (including any number in front of a choice), the quotes, and the operator.

What happens

You build a flow. Get items has a filter such as Status eq 'Open'. You run it. The flow shows green, but the output is empty, or the run fails with "The query is not valid." A green run with no rows is the harder case, because nothing tells you which part of the filter is wrong.

This guide covers a filter that returns nothing or errors. If the filter works but you only get 100 rows, see "Power Automate Get items stops at 100 rows: how to get them all". If the flow runs and sends the same email many times, see "Power Automate sends the same email two or three times".

Step 1. Use the internal column name

A column has a display name (what people see) and an internal name (what the filter needs). They are often the same. They differ when the name has a space or special character, or when the column was renamed after it was created.

Microsoft's Get items guide shows this in its order by example: "Spaces in the column name are replaced with _x0020_ (0 is numeral zero)." Its filter example uses the same rule: Start_x0020_Date gt ... for a column shown as Start Date.

So a column shown as Due Date is filtered as Due_x0020_Date. A column you renamed later keeps its first name inside. If you made a column called Status, then renamed it to Case State, the filter may still need Status.

One way to find the internal name: open the list settings, click the column name, and look at the end of the address in the browser. It shows the name after "Field=". Exact screens differ by tenant. Microsoft's pages do not describe this step for Get items, so this is our advice, not a Microsoft rule.

The Title column is the one every list has. If you renamed it, the filter still uses Title.

Step 2. Match the value exactly, including number prefixes

The filter compares text. Status eq 'Open' only matches the value Open.

If your Choice column uses number prefixes to keep an order, such as 1 High, 2 Medium, 3 Low, the stored value is "1 High", not "High". Write the filter as Priority eq '1 High'. A filter for 'High' returns nothing, with no error.

Case and spaces count too. A trailing space in a choice value, or a different spelling, will not match. One way to start: copy the value straight from the list into the filter, then change it back to a dynamic value later.

Number prefixes are there to keep your order in views and filters. Our advice, not a Microsoft rule: a Choice column sorts by its text, so "1 High" comes before "2 Medium".

Step 3. Put quotes around text, not numbers

Microsoft's example is: Location eq 'Midwest'. The value is in single quotes. Text values need single quotes. If the text itself has an apostrophe, such as O'Brien, the filter breaks. One way to handle it is to double the apostrophe (O''Brien). That is our advice, not a Microsoft rule.

If you insert a dynamic value from an earlier step, put single quotes around it in the box. Without the quotes, the filter is not valid. For a Choice column, pick the dynamic value that ends in Value, not the whole choice object.

Step 4. Use ne for not equal

A Microsoft Q&A question asked how to use a not equal filter in Get items. The answer said: "You need to use ne instead of eq false." Its example was: Status ne 'complete2' and Status ne 'complete1' and Status ne 'pending'.

The list of operators on Microsoft's Get items page for numbers is lt, le, gt, ge, eq and ne. Use ne. Do not write neq, !=, or <>.

To exclude several values, chain them with and, and repeat the column name each time: Status ne 'Done' and Status ne 'Dropped'. Writing Status ne 'Done' or 'Dropped' is not valid.

Blank values are a special case. Our advice, not a Microsoft rule: if you need rows where a column is empty, leave that part out of the filter and test the column in a Condition after Get items.

Step 5. Lookup columns need the column from the other list

A lookup column pulls a value from another list. Microsoft's example is: Country/Title eq 'New Zealand'. It explains that "Country is a lookup column in the list and Title is a column in the referenced list."

So filter on the lookup name, a slash, and the column from the other list. Filtering on Country alone will not match the shown text.

Microsoft's connector page also says Get items supports "a maximum of 12 lookup columns," and that the flow fails if a list goes over it.

Step 6. Person columns

A Person column holds a user, not plain text. Microsoft's SharePoint REST page says that "users are represented by the user's friendly (display) name, and not their alias or domain\alias combination." It also says membership-based user queries are not supported.

Microsoft's pages do not describe a full person-column filter for Get items. One way to start, and our advice: get the rows first with a simpler filter, then use a Condition after Get items to test the person's display name or email. It is slower, but it is easier to see what is going on.

Step 7. Date filters

Dates often return nothing because the value has a time part. A date column with 2026-10-21 may be stored with a time, so a test for equality (eq) on one day can miss it.

Microsoft's example compares a date with an expression: Start_x0020_Date gt 'formatDateTime(utcNow(),'yyyy-MM-dd')'. For one whole day, one way to start (our advice) is a range: the date is at or after the start of the day and before the start of the next day. Example: Due_x0020_Date ge '2026-10-21' and Due_x0020_Date lt '2026-10-22'. Use ge for the start and lt for the end. Do not use eq.

Time zones can shift the day. If rows show up a day early or late, check the time zone of the site and of the expression you use.

Step 8. Text filters: starts with and contains

Microsoft's Get items guide lists startswith and substringOf as supported string methods, and gives this example: startswith(Title, 'A'). Microsoft's SharePoint REST page gives the substringof order: the text first, then the column, as in substringof('text',Title). Test it on a few rows before you rely on it.

On a list with more than 5,000 items, turn Pagination on in the action's Settings. Microsoft lists this as a known limit with filter queries, quoted in Step 9.

Eight filters to copy

Replace the names with your own internal column names.

  1. Text. Microsoft example: Location eq 'Midwest'
  2. Two conditions. Microsoft example: Location eq 'Midwest' and Status eq 'Approved'
  3. Starts with. Microsoft example: startswith(Title, 'A')
  4. Lookup. Microsoft example: Country/Title eq 'New Zealand'
  5. Column with a space. Microsoft shows the pattern Start_x0020_Date gt ... for a column shown as Start Date.
  6. Not equal. Status ne 'Done' (ne is on Microsoft's operator list).
  7. Choice with a number prefix. Priority eq '1 High'. Our advice, not a Microsoft rule.
  8. One whole day. Due_x0020_Date ge '2026-10-21' and Due_x0020_Date lt '2026-10-22'. Our advice, not a Microsoft rule.

Step 9. Test the filter in small pieces

  1. Remove the filter. Run the flow. Confirm Get items returns rows.
  2. Add one condition only, such as Status eq 'Open'. Run it.
  3. Add the next condition. Run it again.
  4. When rows disappear, the last condition you added is wrong.
  5. In the run history, open Get items and read the Inputs. Check the exact text the flow sent.
  6. Set Top Count to the number of rows you need, up to 5,000. The default for Get items is 100 rows. Open the action's Settings and turn Pagination on if you expect more. Microsoft's guide also says: "While using Get items on lists with more than 5000 items with a filter query, you may observe that no records are returned if there are no items matching the filter query in the first 5000 items." The guide's fix is to enable Pagination.

Exact names of settings and screens may differ.

What to avoid

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Power Automate Get items filter query contains

Microsoft lists startswith and substringOf as supported, with the example startswith(Title, 'A'). Its SharePoint REST page writes substringof('text',Title). Test it on a few rows first.

Power Automate Get items filter query multiple conditions

Join them with and and repeat the column name each time, as in Microsoft's example Location eq 'Midwest' and Status eq 'Approved'.

Power Automate Get items filter query column with space

Replace each space in the internal column name with _x0020_, so Start Date becomes Start_x0020_Date.

What is the not equal operator in a Get items filter?

Use ne. A Microsoft Q&A answer says: "You need to use ne instead of eq false." Chain more than one with and, and repeat the column name.

Why does my Get items filter return no rows but no error?

The filter is valid but nothing matches, such as a choice value missing its number prefix, a wrong internal name, or a date test that uses eq. Open the run history and read the Inputs of Get items to see what was sent.

Sources