This is how I'm currently apply to return all Actions in an Org:
var qe = new QueryExpression("workflow");
qe.ColumnSet = new ColumnSet(true);
qe.Criteria.AddCondition("category", ConditionOperator.Equal, 3); // Action
qe.Criteria.AddCondition("parentworkflowid", ConditionOperator.Null);
The only problem is when I look at the Unique Name returned, it is returning the Process Name i.e. "My Custom Action" not the actual Unique Name i.e. "new_MyCustomAction".
Is this a bug, or am I doing something wrong?