# Power Automate item() vs items(): Which One to Use

> For the full documentation index, see https://250highstreet.com/llms.txt

> item() or items() in Power Automate? See what each function returns, where each one works, how to name the loop, and what to check when an expression fails.

Use items('Loop name') inside an Apply to each loop to get that loop's current item. Use item() inside an action that repeats over an array, such as Filter array or Select.

## What does item() return?

Microsoft says item() returns the current item in the array during the action's current iteration. You can also read the values from that item's properties.

It takes no parameters. Microsoft's example is item().body, which reads the body from the current message inside a for-each loop. Because it has no name, it always means the item the current action is working on.

## What does items() return?

items() returns the current item from each cycle of a for-each loop. In the designer, that loop is Apply to each. You must give it the name of the loop, written like this: items('Apply_to_each').

Microsoft's function table adds that items() also works inside a Do until loop. See our guide on the [Do until loop](/guides/power-automate-do-until-loop/) for that case.

## Which one fits which action?

Filter array keeps only the objects that match your rule. Select changes the shape of each object. Both look at one object at a time, so item() fits there. Read our guides on [Filter array](/guides/power-automate-filter-array/) and the [Select action](/guides/power-automate-select-action/) for full steps.

Apply to each runs a set of actions once per item. Inside it, use items() with the loop name, or pick the field from dynamic content and let Power Automate write the expression for you.

1.  Filter array condition: item()?\['Status'\] is equal to Submitted
2.  Select map value: item()?\['Title'\]
3.  Inside Apply to each: items('Apply_to_each')?\['Title'\]

## How do you name the loop so items() is easy to read?

The loop name goes inside the quotes, so it must match the card name.

This is advice from practice, not a Microsoft rule: rename the loop to say what it loops over, such as Each overdue task. Then items('Each_overdue_task') tells the next person what it holds.

## Why does the loop name matter?

The loop name tells items() which loop to read. Microsoft lists it as the one required parameter. If you put a loop inside another loop, each loop has its own name, so you can read the outer item while you are in the inner loop.

Example: inside a loop named Each_task, a nested loop named Each_comment can read items('Each_task')?\['Title'\] and items('Each_comment')?\['Body'\] side by side.

## What should you check when the expression fails?

1.  Confirm the loop name in items() matches the card name.
2.  Confirm you are inside the loop. Microsoft says to use items() inside the for-each loop.
3.  Use the question mark form, such as ?\['Title'\], so a missing field does not stop the flow. Read our guide on [Parse JSON](/guides/power-automate-parse-json-generate-from-sample/) if the field does not appear in dynamic content.
4.  Open the run history and look at the loop's input to see the real column names.
5.  If a Get items list stops at 100 rows, the loop is not the cause. See [Get items returns only 100](/guides/power-automate-get-items-only-returns-100/).

## Do you need help building a flow like this?

I am Al Davies at 250 High Street LLC. I build SharePoint and Power Automate trackers, working remotely. One tracker is \$5,000 in 2 weeks, and the first call is free.

If a loop in your flow keeps failing, send it over and we can look at it together. Examples of past work are on the [portfolio page](/portfolio/).

## FAQ

### Does items() work outside a loop?

No. Microsoft says to use it inside the for-each loop. Outside a loop there is no current item to return.

### Can I use items() inside Do until?

Yes. Microsoft's function table says items() returns the current item from the specified Foreach or Until loop.

### Do I have to type these expressions by hand?

Not always. Picking a field from dynamic content inside a loop writes the expression for you. Type it by hand when the field is missing from the list.

## Sources

- [Reference guide to workflow expression functions in Azure Logic Apps and Power Automate (item, items)](https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference)
- [Use data operations in Power Automate (Select, Filter array)](https://learn.microsoft.com/en-us/power-automate/data-operations)

## Related guides

- [Power Automate Do Until Loop: Setup, Limits and Fixes](/guides/power-automate-do-until-loop/)
- [Power Automate Filter Array: Steps and Examples](/guides/power-automate-filter-array/)
- [Power Automate Select Action: Reshape an Array](/guides/power-automate-select-action/)
- [Power Automate Parse JSON: Schema and Examples](/guides/power-automate-parse-json-generate-from-sample/)
- [Power Automate Get items stops at 100 rows: how to get them all](/guides/power-automate-get-items-only-returns-100/)

Source: https://250highstreet.com/guides/power-automate-item-vs-items/
