Searching is fairly straight forward, and do not require any security logins to perform. You can see this by just going to www.arcgis.com and typing something into the search box. For this example though, I am going to use login credentials just in case I needed to perform an administrative task down the line.
if __name__ == "__main__": username = "MY USERNAME" password = "MY PASSWORD" url = "http://www.arcgis.com/sharing" proxy_url = None#"127.0.0.1" # for fiddler proxy_port = None#"8888" # for fiddler q2 = "owner:esri" securityHandler = arcrest.AGOLTokenSecurityHandler(username, password, proxy_port=proxy_port, proxy_url=proxy_url) admin = arcrest.manageagol.Administration(url=url, securityHandler=securityHandler, proxy_url=proxy_url, proxy_port=proxy_port) res = admin.query_without_creds( q=q2, start=1, num=1) # Want to find only public item on owner:esri items =  total = int(res['total']) steps = int(total / 100) if (total % 100) > 0: steps += 1 step = 1 while step <= steps: res = admin.query_without_creds( q=q2, start= 1 + ((step-1)*100), num=100) for r in res['results']: print r # do something with item! del r del res step += 1
The item is returned from the query_without_creds() as a dictionary. It contains information about each item that is unique to that item.
The script isn't doing much with the items that it finds, but it does show how you can loop through the owner's items (esri). If you could administer the owner's item, you could change those public items to private.
To get a better sense of what you cannot and can query, and how the syntax works, I would check out this (http://doc.arcgis.com/en/arcgis-online/reference/search.htm). It shows the advanced search syntax in great detail.
You can get ArcREST here (www.github.com/esri/ArcREST) if you do not have it.