ArXiV Technical Paper API Github Repo
Python has an official style-guide, PEP8. It recommends using lower_case for variables, functions and methods.
I would encourage you to use requests.get instead of urllib.request. It can take care of urlencoding the parameters for you.
You can make pull_from_arxiv a generator to save a few lines.
BeautifulSoup can be sped up using the lxml parser.
on_get can be simplified a bit using a list comprehension.
Not sure if your cleanText is really needed. Anyways, I would use str.replace instead of str.split and str.join.




import requests
from bs4 import BeautifulSoup

class ArXivPully:
    def pull_from_arxiv(self, search_query, num_results=10):
        url = "https://export.arxiv.org/api/query"
        params = {"search_query": f"all:{search_query}",
                  "start": 0,
                  "max_results": num_results}
        data = requests.get(url, params=params).text
        soup = BeautifulSoup(data, 'lxml')
        # ArXiv populates the first title value as the search query
        titles = soup.find_all('title')[1:] 
        bodies = soup.find_all('summary')
        links = soup.find_all('link', title='pdf')

        for title, body, link in zip(titles, bodies, links):
            yield (link['href'],
                   title.text.strip().replace("\n", " "),
                   body.text.strip().replace("\n", " "))

    def on_get(self, req, resp):
        """Handles GET requests"""
        resp.media = [list(self.pull_from_arxiv(*item))
                      for item in req.params.items()]


Side note: Using this returns completely different results compared to entering the search string on the arxiv website search field. Not sure why. Same is true for your queries, though (the only difference is that  gets encoded as + and : as %3a by requests.get).