# API Filter users by emails, including secondary emails

**URL:** <https://meta.discourse.org/t/api-filter-users-by-emails-including-secondary-emails/296910>\
**Category:** Development\
**Tags:** rest-api\
**Created:** [February 27, 2024, 3:03pm UTC](https://meta.discourse.org/t/api-filter-users-by-emails-including-secondary-emails/296910 "2024-02-27T15:03:20Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![oca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oca/32/156060_2.png) [@oca](https://meta.discourse.org/u/oca)\
**Post date:** [February 29, 2024, 9:31am UTC](https://meta.discourse.org/t/api-filter-users-by-emails-including-secondary-emails/296910/3 "2024-02-29T09:31:50Z")

</div>

Thank you.  
I managed to do it with this plugin, using this query:

```sql
--[params]
-- string :q_email

SELECT u.username FROM users u JOIN user_emails e ON u.id=e.user_id WHERE e.email = :q_email

```

And calling it with the python script:

```python
import pydiscourse
client = DiscourseClient('https://forum.com', api_username='system', api_key='1234')
params = '{"q_email":"' + str(email) + '"}'
response = client._request('POST', '/admin/plugins/explorer/queries/{number}/run', params={"params":params}) # Yes, there are 3 params, each one representing something different. Good hacking practice !
username=response["rows"]

```

---

_[View the full topic](https://meta.discourse.org/t/api-filter-users-by-emails-including-secondary-emails/296910)._
