Select to view content in your preferred language

BUG search api https://esearchapi.esri.com/search

297
1
Jump to solution
01-16-2025 04:56 PM
LHo
by
Regular Contributor

Hi All

I'm trying to use this function to search for bugs online

def bug_search():
    url = r"https://esearchapi.esri.com/search"
    data = {
        "num": 15,
        "client": "support_all",
        "start": 0,
        "site": "support_bug_articles",
        "format": "json",
        "len": 100,
        "lr": "en",
        "index": "support_all",
        "_source": {
            "excludes": [
                "content",
                "meta",
                "connectorSpecific"
            ]
        },
        "q": "",
        "sort": "metaFields.date-sort:D",
        "partialfields": "version:11%2E3"
    }
    response = requests.post(url=url, data=json.dumps(data))

 

1.  It only returns 10 hits in the response 

2. The response seems to be ignoring the offset value

3. There is a lot of non English language in the response even though "lr" = "en".

 

Can anyone point me in the right direction to properly query this api?

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
LHo
by
Regular Contributor

I got it working by using a session in python.

def bug_search(max_return = 20):
    url = r"https://esearchapi.esri.com/search"
    MAX_PAGE_LEN = 5
    results = []
    session = requests.Session()
    headers = {
        "Accept": "application/json, text/plain, */*",
        "Accept-Encoding": "gzip, deflate, br, zstd",
        "Accept-Language": "en-US,en;q=0.9,en-AU;q=0.8",
        "Origin": "https://support.esri.com",
        "Referer": "https://support.esri.com/",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-site",
        "sec-ch-ua": '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": '"Windows"'
    }
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"
    })
    for offset in range(0, max_return, MAX_PAGE_LEN):
        if offset + MAX_PAGE_LEN > max_return:
            offset = max_return - MAX_PAGE_LEN

        data = {
            "num": MAX_PAGE_LEN,
            "client": "support_all",
            "start": offset,
            "site": "support_bug_articles",
            "format": "json",
            "len": max_return,
            "lr": "en",
            "index": "support_all",
            "_source": {
                "excludes": [
                    "content",
                    "meta",
                    "connectorSpecific"
                ]
            },
            "q": "",
            "sort": "metaFields.date-sort:D",
             "partialfields": "version:11%2E3"
        }
       

        response = session.post(url, headers=headers, json=data)
        hits = response.json()["search"]["hits"]
        results.extend([json.dumps(i) for i in hits])
    results = [json.loads(i) for i in set(results)]

    return results

View solution in original post

0 Kudos
1 Reply
LHo
by
Regular Contributor

I got it working by using a session in python.

def bug_search(max_return = 20):
    url = r"https://esearchapi.esri.com/search"
    MAX_PAGE_LEN = 5
    results = []
    session = requests.Session()
    headers = {
        "Accept": "application/json, text/plain, */*",
        "Accept-Encoding": "gzip, deflate, br, zstd",
        "Accept-Language": "en-US,en;q=0.9,en-AU;q=0.8",
        "Origin": "https://support.esri.com",
        "Referer": "https://support.esri.com/",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-site",
        "sec-ch-ua": '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": '"Windows"'
    }
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"
    })
    for offset in range(0, max_return, MAX_PAGE_LEN):
        if offset + MAX_PAGE_LEN > max_return:
            offset = max_return - MAX_PAGE_LEN

        data = {
            "num": MAX_PAGE_LEN,
            "client": "support_all",
            "start": offset,
            "site": "support_bug_articles",
            "format": "json",
            "len": max_return,
            "lr": "en",
            "index": "support_all",
            "_source": {
                "excludes": [
                    "content",
                    "meta",
                    "connectorSpecific"
                ]
            },
            "q": "",
            "sort": "metaFields.date-sort:D",
             "partialfields": "version:11%2E3"
        }
       

        response = session.post(url, headers=headers, json=data)
        hits = response.json()["search"]["hits"]
        results.extend([json.dumps(i) for i in hits])
    results = [json.loads(i) for i in set(results)]

    return results
0 Kudos