Skip to content

Pawikoski/olx-api-wrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

OLX Api Wrapper

Simple client for OLX Developer API written in Python
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

OLX API Wrapper: Easy Solution for Working with OLX. With this Python library you can quickly fetch user data, handle adverts with simple CRUD operations, and seamlessly integrate with the OLX API. Simplify your development process and focus on building your app hassle-free.

(back to top)

Built With

  • Python
  • requests
  • dacite

(back to top)

Getting Started

In order to use OLX Api you need to sign in at OLX Developer Portal and create an App. More details: https://developer.olx.pl/articles/getting-access-to-api

Prerequisites

To use this API Wrapper you need to copy Client ID and Client Secret. Store them in the safe place. In your code you can use them as enviroment variables, they sholdn't be hardcoded. You can perform actions with API on:

  • OLX PL
  • OLX BG
  • OLX RO
  • OLX PT
  • OLX UA
  • OLX KZ

By default, all requests are sent to olx.PL. To change it you must pass country_code argument to every child of Olx class, i.e.:

olx.partner.Auth(country_code="bg")
olx.partner.Adverts(country_code="ro")
olx.partner.Users(country_code="pt")
olx.partner.CitiesDistricts(country_code="ua")
olx.partner.AdvertsStatistics(country_code="kz")
# etc...

Installation

  1. Install olx-api-wrapper package
    pip install olx-api-wrapper
  2. In order to get access token you need to authenticate with authorization code. How to get authorization code?
    from olx.partner import Auth
    auth = Auth(
      client_id="your_client_id",
      client_secret="your_client_secret",
    )
    auth.authenticate(code='authorization_code')
    access_token = auth.access_token
  3. Now you have access token which you will need to have an access to OLX API resources.
  4. authenticate() method returns AuthResponse, so you can get other info like refresh token, scope or information about remaining time left.
    auth_response = auth.authenticate(code='authorization_code')
    # AuthResponse(access_token='access_token', expires_in=86367, token_type='bearer', scope='read write v2', refresh_token='refresh_token')
    To refresh expired access token just use refresh method as below:
    auth.refresh(refresh_token=auth_response.refresh_token)
    # If token is still valid, the response will be AuthResponse with current access token and time left (in seconds)
    # If token is expired, the response will be AuthResponse with new access token and fresh expiration time

(back to top)

Usage

Using olx-api-wrapper in Your Project

Below are examples demonstrating the usage of olx-api-wrapper in your project. Please note that you require an access token to execute the actions described below.

Each section from the OLX API documentation corresponds to a separate object within olx-api-wrapper. For instance, the section Users in the documentation is represented as olx.Users. Additionally, each endpoint mentioned in the documentation corresponds to a single method. For example, the 'Get user' endpoint becomes the method olx.partner.Users().get_user(user_id).

If a method returns a value, it will be in the form of a dataclass object. This facilitates ease of use and clarity due to type hints. You can access values as properties, for example, user_values.email.

This structure provides a convenient and straightforward approach to integrating olx-api-wrapper into your project.

=====================================

First of all you need to assign an object you want to use to variable and then use available method of this object. You must to pass access_token to every single object.

Prerequisites: Import olx module.

import olx
  • Show authenticated user info
    users = olx.partner.Users(access_token='your_access_token')
    user_info = users.get_authenticated_user()
    # AuthenticatedUser(id=123, email='john@mail.com', status='confirmed', name='Paweł', phone='123123123', phone_login=None, created_at='2018-01-29 19:48:49', last_login_at='2024-04-26 17:20:48', avatar=None, is_business=True)
    
    user_email = user_info.email
    # john@mail.com
  • Get category suggestions for provided ad title
    categories_and_attributes = olx.partner.CategoriesAttributes(access_token='your_access_token')
    suggestions = categories_and_attributes.get_category_suggestions(ad_title='Honda Hornet')
    # [CategorySuggestion(id='1379', name='Szosowo - Turystyczny', path=[CategoryPath(id='5', name='Motoryzacja'), CategoryPath(id='81', name='Motocykle i Skutery')])]

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Paweł Stawikowski - pawikoski@gmail.com

Project Link: https://github.com/Pawikoski/olx-api-wrapper

(back to top)