Transfers

Below is the current state of functionality within the Transfers category. All methods within the Transfers category are stable.

Squads

The Transfers category contains many functions. We’ll go through them in three sections: Search, Transfer List, and Transfer Targets.



Transfer List

fut.tradepile()

fut.tradepile() returns a list of dictionaries that include the transfer information for players you’ve listed on the transfer market. A description of the returned dict of transfer info is linked here.

Example:

>>> fut.tradepile()
[{'tradeId': 16575379694,
'buyNowPrice': 1800,
'tradeState': 'closed'...}]

fut.tradeStatus()

fut.tradeStatus() takes one argument (trade_id) and returns a list containing a condensed dictionary for each tradeId. The returned dictionary is linked here.

Example:

>>> fut.tradeStatus(trade_id=16575379694)
[{'tradeId': 16575379694,
'buyNowPrice': 1800,
'tradeState': 'closed',
...}]

fut.sendToTradepile()

fut.sendToTradepile() takes one argument (item_id) and has an optional argument (safe) that checks the length of your tradepile to make sure you have room to store another item. The item_id argument is the id field in player info dictionaries. A successful send will return True. An unsuccessful send will return Falseif you do not own the item you’re trying to send to the tradepile, or 403 if the item you’re trying to send is untradeable.

Examples:

>>> # Card I own where untradeable == False
>>> fut.sendToTradepile(item_id=117860780888)
True

>>> # Card I don't own
>>> fut.sendToTradepile(item_id=1)
False

>> # Card I own where untradeable == True
>> fut.sendToTradepile(item_id=118360247419)
{'Access-Control-Expose-Headers': 'Retry-After', 'Content-Length': '20', 'X-UnzippedLength': '0', 'Content-Encoding': 'gzip', 'Server': 'Jetty(8.0.0.M2)'}
403
...}

fut.tradepileDelete()

fut.tradepileDelete() takes one argument (item_id). The item_id argument is the id field in player info dictionaries. A successful delete will return True. An unsuccessful delete will return fut.exceptions.Conflictif the item you’re trying to delete is in an active tradestate. You will receive a 410 error if you do not own the item you’re trying to delete.

Examples:

>>> # Card in the tradepile that is not active
>>> fut.tradepileDelete(item_id=16575379694)
True

>>> # Card in the tradepile that is active.
>>> fut.tradepileDelete(item_id=16705837956)
fut.exceptions.Conflict

>> # Card I don't own
>> fut.tradepileDelete(item_id=1)
{'Content-Length': '20', 'X-UnzippedLength': '0', 'Content-Encoding': 'gzip', 'Access-Control-Expose-Headers': 'Retry-After', 'Server': 'Jetty(8.0.0.M2)'}
410
...}

fut.tradepileClear()

fut.tradepileClear() takes zero arguments. It clears the sold items from your tradepile. It does not return anything for a successful clear, but it does return a 410 error if you don’t have any sold items to clear from your tradepile.

>>> # Check number of cards in tradepile
>>> len(fut.tradepile())
3
>>> fut.tradepileClear()
>>> len(fut.tradepile())
2

>>> # Already cleared sold cards. Trying to clear again...
>>> fut.tradepileClear()
{'Content-Length': '20', 'X-UnzippedLength': '0', 'Content-Encoding': 'gzip', 'Access-Control-Expose-Headers': 'Retry-After', 'Server': 'Jetty(8.0.0.M2)'}
410

fut.relist()

fut.relist() takes zero arguments. It relists the cards in your tradepile with the previous transfer parameters (startingBid, buyNow, duration). The function returns a dictionary with one key: tradeIdList. This contains a list of the tradeIds that were succesfully relisted.

>>> fut.relist()
{'tradeIdList': [16575379694]}

fut.sell()

fut.sell() takes five arguments:

  • item_id (int): the id field in player info dictionaries
  • bid (int): the amount of coins you’re willing to place the specific item/player up for starting bid (marketDataMinPrice<bid <marketDataMaxPrice)
  • buy_now (int): the amount of coins you’re willing to place the specific item/player up to buy now (this must be higher than the starting bid)
  • duration (int): the amount of seconds (default 3600) to place the item/player up for transfer. (this must be in intervals available through the web app)
  • fast (boolean): (default False) check the trade status of the item before listing on the transfer market

A successful listing will return the tradeId for your item.

>>> # Successful listing of an item I own listed within parameters
>>> fut.sell(item_id=119119825851, bid=1000, buy_now=100000, duration=3600)
16895235756

>>> # Unsuccessful listing of an item because I don't own it
>>> fut.sell(item_id=2, bid=1000, buy_now=10000)
PermissionDenied: 461

>>> # Unsuccessful listing of an item because it is listed below marketDataMinPrice
>>> fut.sell(item_id=119119825851, bid=200, buy_now=10000)
PermissionDenied: 461

>>> # Unsuccessful listing of an item because it is listed at a bad duration
>>> fut.sell(item_id=119119825851, bid=1000, buy_now=100000, duration=3599)
PermissionDenied: 460


Watch List

fut.watchlist()

fut.watchlist() returns a list of dictionaries that include the transfer information for players you’ve bid on on the transfer market. A description of the returned dict of transfer info is linked here.

Example:

>>> fut.watchlist()
[{'tradeId': 16656454826,
'buyNowPrice': 5900000,
'tradeState': 'active'...

fut.sendToWatchlist()

fut.sendToWatchlist() takes one argument (trade_id). The trade_id argument is the tradeId field in the transfer info dictionary. A successful send will return an empty dictionary (needs to be fixed to return something). An unsuccessful send will return fut.exceptions.Conflictif the card has expired from the transfer market, or fut.exceptions.PermissionDenied: 461 if the id you’ve provided is not valid.

Examples:

>>> # Active card on transfer market
>>> fut.sendToWatchlist(trade_id=117860780888)
{}

>> # Card that has expired or closed from transfer market
>> fut.sendToWatchlist(trade_id=118360247419)
fut.exceptions.Conflict

>>> # Ineligible card
>>> fut.sendToWatchlist(trade_id=2)
fut.exceptions.PermissionDenied: 461

fut.watchlistDelete()

fut.watchlistDelete() takes one argument (trade_id). The trade_id argument is the tradeid field in the transfer info dictionary. A successful delete will return True. An unsuccessful delete will still return True (needs to be updated).

Examples:

>>> # Card in my watchlist
>>> fut.watchlistDelete(16746617493)
True

>>> # Card not in my watchlist
>>> fut.tradepileDelete(1)
True

fut.bid()

fut.bid() takes three arguments:

  • trade_id (int): the tradeId field in transfer info dictionaries
  • bid (int): the amount of coins you’re willing to bid on the specific item/player (must be higher than currentBid and startingBid but there is no maximum value)
  • fast (boolean): (default False) checks tradeStatus of item and your current coint count. this runs about 5x faster in the example for me below.

A successful bid will return True, and this player/item will be available in your watchlist. An unsucessful bid could happen for a couple of reasons: either the transfer listing has expired or someone has outbid you.

>>> # Successful bid
>>> fut.sell(trade_id=16894052507, bid=150)
True

>>> # Unsuccessful bid because I bid less than the minimum amount
>>> fut.sell(trade_id=16894052507, bid=100)
False

>>> # Unsuccessful bid because the item expired or someone outbid me
>>> fut.sell(trade_id=16894049525, bid=200)
False

>>> # Checking how fast the fast-bid really is
>>> # fast=True
>>> start_time = time.time()
>>> fut.bid(trade_id=16894205969, bid=150, fast=True)
True
>>> elapsed_time = time.time() - start_time
>>> print(elapsed_time)
0.5593163967132568
>>> # fast=False
>>> start_time = time.time()
>>> fut.bid(trade_id=16894232971, bid=150, fast=False)
>>> elapsed_time = time.time() - start_time
>>> print(elapsed_time)
2.7050693035125732

fut.unassigned()

fut.unassigned() takes zero arguments. It provides player or item info for the unassigned items in your watchlist. These are typically items for which you paid the buyNow price. It returns the player info dictionary.

>>> # Unassigned items
>>> fut.unassigned()
[{'assetId': 230621,
  'assists': 0,
  'attributeList': [{u'index': 0, u'value': 88}
  ...]}
 >>> # Nothing unassigned
 >>> fut.unassigned()
 []

fut.sendToClub()

fut.sendToClub() takes one argument, item_id. The item_id argument is the id field in player info dictionaries. A successful send will return True, and an unsuccessful send will return False.

>>> # Item I own and want to send to my club
>>> fut.sendToClub(item_id=119293105688)
True

>>> # Item I do not own
>>> fut.sendToClub(item_id=2)
False