Code Monkey home page Code Monkey logo

indeed-python's Introduction

indeed-python

A client library for using the Indeed Jobsearch API

Installation

Install from PyPi using pip, a package manager for Python.

$ pip install indeed

Don't have pip installed? Try installing it, by running this from the command line:

$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

API Credentials

The Indeed API needs to be called with your Indeed publisher number. You must pass this to the IndeedClient constructor.

from indeed import IndeedClient

client = IndeedClient(publisher = YOUR_PUBLISHER_NUMBER)

If you do not have a publisher number, you can receive one by heading to the Indeed Publisher Portal.

Performing a Job Search

from indeed import IndeedClient

client = IndeedClient('YOUR_PUBLISHER_NUMBER')

params = {
    'q' : "python",
    'l' : "austin",
    'userip' : "1.2.3.4",
    'useragent' : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2)"
}

search_response = client.search(**params)

Retrieving Job Details

from indeed import IndeedClient

client = IndeedClient('YOUR_PUBLISHER_NUMBER')

job_response = client.jobs(jobkeys = ("5898e9d8f5c0593f", "c2c41f024581eae5"))

API Paramaters

Job Search

q - Query. By default terms are ANDed. To see what is possible, use our advanced search page to perform a search and then check the url for the q value.

l - Location. Use a postal code or a "city, state/province/region" combination.

userip - The IP number of the end-user to whom the job results will be displayed. This field is required.

useragent - The User-Agent (browser) of the end-user to whom the job results will be displayed. This can be obtained from the "User-Agent" HTTP request header from the end-user. This field is required.

format - Format. Which output format of the API you wish to use. The options are "xml" and "json.". Default is "json". The IndeedClient requests and parses a json repsonse by default. If you with to use the xml format, requests will be performed with the raw parameter set to True, see raw.

raw - A boolean. Receive the raw json/xml response from the Indeed API. Use in addition with format to specify which response format you would like. Default is False

sort - Sort by relevance or date. Default is relevance.

radius - Distance from search location ("as the crow flies"). Default is 25.

start - Start results at this result number, beginning with 0. Default is 0.

limit - Maximum number of results returned per query. Default is 10, Maximum is 25

fromage - Number of days back to search.

highlight - Setting this value to 1 will bold terms in the snippet that are also present in q. Default is 0.

filter - Filter duplicate results. 0 turns off duplicate job filtering. Default is 1.

latlong - If latlong=1, returns latitude and longitude information for each job result. Default is 0.

co - Search within country specified. Default is us.

Job Details

jobkeys - Job keys. A list of job keys specifying the jobs to look up. This parameter is required.

format - Format. Which output format of the API you wish to use. The options are "xml" and "json.". Default is "json". The IndeedClient requests and parses a json repsonse by default. If you with to use the xml format, requests will be performed with the raw parameter set to True, see raw.

raw - A boolean. Receive the raw json/xml response from the Indeed API. Use in addition with format to specify which response format you would like. Default is False

indeed-python's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

indeed-python's Issues

Allow personal API portal

Many of us are far too lazy to signup as a publisher, and there's also a risk that it will be denied for personal use (usually because this will have 1 unique user).

Most of us just want to scrape the site to see if theres anything worth looking at.

Timeout for request

Hi guys,

can you add timeout parameter for request.get() ?
I am having some connection issues to indeed API server and it resulted into 500 because of nginx timeout. It would be better to catch the timeout exception in the application.

Thank you,
Peter

import fails in Linux

I use Anaconda and did a 'pip install indeed'.
All files are present.
Then get a failure:

In [2]: from indeed import IndeedClient

ImportError Traceback (most recent call last)
in ()
----> 1 from indeed import IndeedClient

/home/daniel/anaconda/envs/py27/lib/python2.7/site-packages/indeed/init.py in ()
----> 1 import requests
2
3 DEFAULT_FORMAT = "json"
4 API_ROOT = "http://api.indeed.com/ads"
5 API_SEARCH = {'end_point': "%s/apisearch" % API_ROOT, 'required_fields': ['userip', 'useragent', ['q', 'l']]}

/home/daniel/anaconda/envs/py27/lib/python2.7/site-packages/requests/init.py in ()
56 pass
57
---> 58 from . import utils
59 from .models import Request, Response, PreparedRequest
60 from .api import request, get, head, post, patch, put, delete, options

/home/daniel/anaconda/envs/py27/lib/python2.7/site-packages/requests/utils.py in ()
20
21 from . import version
---> 22 from . import certs
23 from .compat import parse_http_list as _parse_list_header
24 from .compat import (quote, urlparse, bytes, str, OrderedDict, urlunparse,

ImportError: cannot import name certs

Suggestion

jobkeys has to take two or more keys. This wasn't implicitly mentioned in the documentation. If you specify just one key, you get an empty results

apigetjobs is not functional - GLOBAL API ISSUE

The apigetjobs endpoint always returns a blank results table. I ensured the URL parameters were formatted correctly, in accordance with the IndeedClient implementation. On top of that, I tried both xml and json output formats, and even multiple publisher tokens. Given how recently this repo was last 'updated' I'd assume apigetjobs isn't officially deprecated.

Examples (using cURL)

$ curl "http://api.indeed.com/ads/apigetjobs?publisher=7863709885041358&v=2&format=json&jobkeys=5898e9d8f5c0593f,c2c41f024581e
ae5"
{"version":2,"results":[]}
$ curl "http://api.indeed.com/ads/apigetjobs?publisher=1637952116847595&jobkeys=5e50b56a7e69073c&v=2&format=json"
{"version":2,"results":[]}
$ curl "https://api.indeed.com/ads/apigetjobs?publisher=1637952116847595&jobkeys=5e50b56a7e69073c&v=2"
<?xml version='1.0' encoding='UTF-8'?><response version="2"><results/></response>

Cannot import name 'MutableMapping' from 'collections'

Using library inside virtualenv, and so far when I attempt to import it, I receive the message:

In [1]: from indeed import IndeedClient
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 1
----> 1 from indeed import IndeedClient

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/indeed/__init__.py:1
----> 1 import requests
      3 DEFAULT_FORMAT = "json"
      4 API_ROOT = "http://api.indeed.com/ads"

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/__init__.py:58
     55 except ImportError:
     56     pass
---> 58 from . import utils
     59 from .models import Request, Response, PreparedRequest
     60 from .api import request, get, head, post, patch, put, delete, options

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/utils.py:23
     21 from . import __version__
     22 from . import certs
---> 23 from .compat import parse_http_list as _parse_list_header
     24 from .compat import (quote, urlparse, bytes, str, OrderedDict, urlunparse,
     25                      is_py2, is_py3, builtin_str, getproxies, proxy_bypass)
     26 from .cookies import RequestsCookieJar, cookiejar_from_dict

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/compat.py:7
      1 # -*- coding: utf-8 -*-
      3 """
      4 pythoncompat
      5 """
----> 7 from .packages import charade as chardet
      9 import sys
     11 # -------
     12 # Pythons
     13 # -------
     14 
     15 # Syntax sugar.

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/packages/__init__.py:3
      1 from __future__ import absolute_import
----> 3 from . import urllib3

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/packages/urllib3/__init__.py:24
     22 from . import exceptions
     23 from .filepost import encode_multipart_formdata
---> 24 from .poolmanager import PoolManager, ProxyManager, proxy_from_url
     25 from .response import HTTPResponse
     26 from .util import make_headers, get_host, Timeout

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/packages/urllib3/poolmanager.py:14
     11 except ImportError:
     12     from urlparse import urljoin
---> 14 from ._collections import RecentlyUsedContainer
     15 from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool
     16 from .connectionpool import port_by_scheme

File ~/.local/share/virtualenvs/herman-UxExri3D/lib/python3.10/site-packages/requests/packages/urllib3/_collections.py:7
      1 # urllib3/_collections.py
      2 # Copyright 2008-2013 Andrey Petrov and contributors (see CONTRIBUTORS.txt)
      3 #
      4 # This module is part of urllib3 and is released under
      5 # the MIT License: http://www.opensource.org/licenses/mit-license.php
----> 7 from collections import MutableMapping
      8 from threading import RLock
     10 try: # Python 2.7+

ImportError: cannot import name 'MutableMapping' from 'collections' (/usr/local/lib/python3.10/collections/__init__.py)

What concerns me the most is line 10, that states try Python 2.7. It appears this library has not been touched in eight years. Is this library even compatible with python 3? Is it even still maintained?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.